给定两个数(A,B),求他们的二进制中多少位(bit)不一样?

思路: 首先,广泛的思想,确定是先将俩个数转化为二进制形式,而后保存到数组中,分别一个个进行比较。这样能够,但时间花费较长。至少须要两个循环操做。因此,个人方法是: int c= a&b; 能够求出俩个数中相同位置的1的个数。 int d=a|b; 全部有1的位置,也能够理解为0位置相同的个数。 而后用机器位数减去相同的,即为不一样的。或用下边的异或的方法 int f=c^d; 不一样的位置个数 具体代码以下:数组

int main()
{
	cout<<"test is a example"<<endl;
	int a=43,b=102;
	int num1=0,num2=0;
	int c=a&b;
	int d=a|b;
	while(c)
	{
	  c &=(c-1);
	  num1++;
	}
	cout<<num1<<endl;
	while(d+1)
	{
	  d |=(d+1);
	  num2++;
	}
	cout<<num2<<endl;
	cout<<"有"<<32-(num1+num2)<<"位须要变化"<<endl;
    return 0;
}
相关文章
相关标签/搜索