思路: 首先,广泛的思想,确定是先将俩个数转化为二进制形式,而后保存到数组中,分别一个个进行比较。这样能够,但时间花费较长。至少须要两个循环操做。因此,个人方法是: 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; }