求两个整数二进制位不同的位数
思路:1.要求不同的个数 就必须遍历比较两个数的二进制位,不同就使用一个三方变量接收++,相同则跳过。
2.使用一个相同的三方变量来作为两者判断条件的基础,而考虑到需要遍历二进制位 则使用1来作为三方变量。
3.比较方法:通过过使用移位符进行依次比较 如果不相同证明位数不同 则三方变量++。
for (int i = 0; i < 32; i++) { if (((a >> i)&1) != ((b >> i)&1)) { count++; } }
总代码
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() { int a = 0, b = 0; scanf("%d %d", &a, &b); int count = 0; for (int i = 0; i < 32; i++) { if (((a >> i)&1) != ((b >> i)&1)) { count++; } } printf("%d",count); return 0; }