对于一个整形变量,求其二进制表示中“1”的个数。
扩展问题:给定两个正整数啊a和b,问把a变为b需要改变多少位(bit)?也就是说,整数a和b的二进制表示中有多少位是不同的?
把两个整数 a, b 异或, 然后又回归到判断 1 的个数
int Count( int a, int b)
{
int num = 0;
int v = a ^ b;
//计算一个整数中1的个数
while(v)
{
v &= (v-1);
num++;
}
return num;
}
posted on 2008-10-21 10:25
水 阅读(1052)
评论(0) 编辑 收藏 引用 所属分类:
算法与数据结构