思绪:
- 通过异或运算符来检查两个整数二进制表达式中,有几个bit位不一样(不一样为1,一样为0)
- 在写一个函数用来返回二进制中 1 的个数
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//返回参数二进制中 1 的个数
int count_one_bits(unsigned int value){
unsigned int i, count = 0;
for (i = value; i; i /= 2){ //按照二进制逐位遍历
count += i % 2;
}
return count;
}
//int count_one_bits(unsigned int value){
// int count = 0;
// do{
// count++;
// } while (value &= value - 1); //每次将二进制位中的最后一个1转为0(不足之处是不能检测0)
// return count;
//}
int main(){
int input1, input2;
printf("请输入两个个数(十进制):");
scanf("%d%d", &input1, &input2);
printf("%d\n ", count_one_bits(input1^input2));//^ 异或运算符
system("pause");
return 0;
}
代码生成图: