编程之美->二进制1的个数

来源:互联网 发布:淘宝没收到货退款流程 编辑:程序博客网 时间:2024/06/01 10:15
/*对于一个字节(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 则返回1temp >>= 1;}*/printf("你输入的数是:%d,以二进制来计算,其中有%d个1!\n", val, i);return 0;}

原创粉丝点击