/* 2.1 求二进制中的1的个数 */
/* 整数除法算法 */
int Count(unsigned char v)
{
int num = 0;
while (v)
{
if (v % 2 != 0)
{
num++;
}
v /= 2;
}
return num;
}
/* 使用位操作 */
int count(unsigned char v)
{
int num = 0;
while (v)
{
num += v & 0x01;
v >>= 1;
}
return num;
}
/* 直接判断二进制中1的个数 */
int count(unsigned char v)
{
int num = 0;
while (v)
{
v &= (v - 1);
num++;
}
return num;
}
/* 空间换时间算法:使用分支操作;查表发 */
/* 扩展问题2 整数A和B的二进制表示位有多少位不同 */
int count_AB(int A, int B)
{
return count(~A & B) + count(A & ~B);
}
/* 异或 */
int count_AB(int A, int B)
{
return count(A^B);
}