两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
让两个整数右移然后&1再将两个数字异或,结果为1时,说明位(bit)不同
#include<stdio.h>
#include<stdlib.h>
int main(){
int m = 0, n = 0;
int i;
int count = 0;
printf("请输入两个整数:");
scanf_s("%d %d", &m, &n);
for (i = 31; i >=0; i--){
if ((((m >> i) &1)^ ((n >> i)&1)) == 1){//两个数的每一位都进行异或,遇到不同的比特位 时,count加一,最终count的大小代表了有多少个位的不同。
count++;
}
}
printf("%d\n", count);
system("pause");
return 0;
}
输入例子 :1999 2299
输出例子 : 7