/***********************************************************************
目的:输入两个整数并统计两个整数二进制中不同位的个数
分析:
▶ 最直接的方法就是两个对应的位相比较,前提是要得到它们的每1位
▶ 使用异或 '^'后,再统计
平台:Visual studio 2017 && windows
*************************************************************************/
📝 实例代码1:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int i = 0; int count = 0; int m = 0; int n = 0; scanf("%d %d", &m, &n); for(i = 0; i < 32; i++) { if(((m >> i) & 1) != ((n >> i) & 1)) { count++; } } printf("%d\n", count); return 0; }
📝 实例代码2:
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int main() { int i = 0; int count = 0; int m = 0; int n = 0; scanf("%d %d", &m, &n); //相同为0,相异为1 int ret = m ^ n; //这时去统计ret里有几个1,就说明m和n中有几个位不同 while(ret) { ret = ret & (ret - 1); count++; } printf("%d\n", count); return 0; }