本文主要是介绍C语言十六弹 --求两个整数二进制位不同的位数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
求两个整数二进制位不同的位数
思路: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;
}
这篇关于C语言十六弹 --求两个整数二进制位不同的位数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!