/*
对于一个字节(8bit)的变量,求其二进制表示中‘1’的个数,要求算法的执行效率尽可能的高。
*/
#include <stdio.h>
int main()
{
int val, temp, i;
i = 0;
printf("请输入一个整数:", &val);
scanf("%d", &val);
temp = val;
/*解法1 -- 通过对2求余 来判断最后一位是否是1*/
while (temp) {
if (temp % 2 == 1)
i++;
temp = temp / 2;
}
/* /解法2/ -- 通过 右移位操作 实现除法 然后 跟 00000001 进行按位与
while (temp) {
i += temp & 0x01; // 用二进制数跟 00000001 按位与 如果最后一位是 1 则返回1
temp >>= 1;
}
*/
printf("你输入的数是:%d,以二进制来计算,其中有%d个1!\n", val, i);
return 0;
}
编程之美->二进制1的个数
最新推荐文章于 2021-12-11 00:11:55 发布