问题描述:给定两个正整数A和B,问A和B的二进制表示中有多少位不同?
解题思路:对A和B异或操作,转换为求一个二进制数中位数为1的问题。
int Count(int A,int B)
{
int num = 0;
int v = A^B;
while(v)
{
if(v % 2 == 1)
{
num++;
}
v = v/2;
}
return num;
}
int Count(int A,int B)
{
int num = 0;
while(v)
{
num += v & 0x01;
v >>= 1;
}
return num;
}
int Count(int A,int B)
{
int num = 0;
while(v)
{
v &= (v-1);
num++;
}
return num;
}
本文详细阐述了如何通过二进制异或操作计算两个正整数A和B在二进制表示中位数的不同数量。通过三种不同的算法实现这一目标,并深入解释了每种方法背后的原理。
5276

被折叠的 条评论
为什么被折叠?



