标签:平行算法 按位与和左移结合练习
//**********************************第一种方法//这是最优的方法,叫平行算法,没有循环,假如看15里面有多少个1,15是1111 1111
//看奇数位有多少个1,与奇数位都是1的按位与能得出:15&0101 0101(85)得出0101 0101,看偶数位有多少个1:15&1010 1010(170)得出1010 1010,将左边的右移和右边的对齐来加
//偶数位是1010 1010右移1,01010101和奇数位相加1010 1010
//思想就是两位两位来看,看15的倒数第一位和倒数第二位有多少个1,分别有一个1,加起来是2,刚刚加起来的结果是1010 1010,倒数第二位1不就是2,说明是倒数第一位和倒数第二位一起看有2个1
//同样的这次看倒数第一位倒数第二位和倒数第三位和倒数第四位有多少个1:
//上次算的结果1010 1010,将倒数第一位和倒数第二位看做是1个数,看看里面有多少个1,按位与,和0011 0011,得出0010 0010
//将倒数第三位和倒数第四位看做一个数,看里面有多少个1,按位与,和1100 1100,得出1000 1000
//倒数第三位和倒数第四位在左边,将左边的和右边的对齐,将1000 1000右移2得0010 0010
//右移后的结果和倒数第一位和倒数第二位的结果相加 0010 0010 + 0010 0010 = 0100 0100
//右移为什么是1、2、4、8、16,习惯2的倍数
//自己根据平行算法写的
标签:平行算法 按位与和左移结合练习
原文地址:http://blog.csdn.net/panpen120/article/details/39182909