实现代码:
int main(){
int count = 0;
int c = 0;
int i = 0;
int a = 7;
//00000000000000000000000000000111
int b = 3;
//00000000000000000000000000000011
//00000000000000000000000000000111
//00000000000000000000000000000011 按位异或的话 相同为0想异为1
//00000000000000000000000000000100
c = a^b;
//异或之后再和1进行按位与比较(&) 就可以统计出两个整数之间有多少不同位
//00000000000000000000000000000100
//00000000000000000000000000000001
for (i = 0; i < 32;i++){
if ((c >> i) & 1 == 1){//每次循环都往右边移动i位 然后直接和1进行按位与
count++;
}
}
printf("%d和%d之间的不同位有%d个\n",a,b,count);
return 0;
}
//当然这只是实现代码的一种 还有待优化