题目:
编程实现:两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
输入例子:1999 2299
输出例子:7
方法1
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
int a, b, q, w, s = 0;
scanf("%d %d", &a, &b);
for (int i = 32; i > 0; i = i--) {
q = (a >> i) & 1;
w = (b >> i) & 1;
if (q != w)
s++;
}
printf("%d", s);
}
方法2
#include <stdio.h>
int calc_diff_bit(int m, int n){
int tmp = m^n;
int count = 0;
while(tmp){
tmp = tmp&(tmp-1);
count++;
}
return count;
}
int main(){
int m,n;
while(scanf("%d %d", &m, &n) == 2){
printf("%d\n", calc_diff_bit(m, n));
}
return 0;
}