【问题描述】:
编程实现:
两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:
1999 2299
输出例子:7
【解题思路】:直接分别把两个数的32位二进制序列依次拿出来相比较(用和1相与移位再循环的方法),不一样时计数器加1,最后统计计数器的个数
【参考代码】:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main() {
int m = 0, n = 0;
int i = 0, count = 0;
printf("请输入两个整数:");
scanf("%d %d", &m, &n);
for (i = 31; i >= 0; --i) {
if (((m >> i) & 1) != ((n >> i) & 1)) {
count++;
}
}
printf("%d\n", count);
system("pause");
return 0;
}
运行效果: