整数二进制位中1的个数【每日一题】
2017-07-20 13:52
78 查看
题目:计算一个整数二进制位中1的个数。要求效率尽可能的高。
且能正确求正数和负数的二进制中1的个数。
且能正确求正数和负数的二进制中1的个数。
//二进制中1的个数 int CountOf1One(int num) { //但是如果不知道是多少位的机器,冒然给出的32会让人很费解 //所以修改如下 int count = 0; int i = 1; while(i<=32) { int flag = num & i; if(flag) count++; i = i<<1; } return count; } int CountOf1Two(int num) { int count = 0; int flag = 1; //用当flag左移至全部为0时也就知道了该机器的位数,增加代码的可读性 while(flag) { if(num & flag) count++; flag = flag << 1; } return count; } //以上两种方法皆是根据机器位数决定该循环的次数 //下面我们让这个程序有几个1就循环几次 int CountOf1Three(int num) { int count = 0; while(num) { count++; num = num & (num-1); } return count; }
相关文章推荐
- 每日一题(58) - 从1到n整数中1出现的次数
- 【C语言】编写代码实现:求一个整数在内存中的二进制位中1的个数
- 【C语言】C的一些简单练习题,关于水仙花数,求和,整数高低位输出,制定二进制位替换
- 计算一个整数二进制位中1的个数
- 整数二进制位反转
- 每日一题--从1到n整数中1出现的次数
- 每日一题(65) - 数值的整数次方
- 每日一道算法题:一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值
- 剑指offer 10----计算一个整数二进制位中1的个数
- 翻转整数的二进制位
- 两个整数m和n表达式中,有几个二进制位不同
- 将整数X的第p位开始的n个位(二进制位)取反并且将结果返回
- 每日一道算法题:Google 2009年某笔试题:求出元素位于0到9之间的集合A中大于某个给定正整数K的组成的最小正整数。
- 每日一道算法题:输出和为n的连续正整数序列
- 判断任意整数的二进制位中有多少个1
- 每日一道算法题:Google面试题:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数
- 计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
- 【每日一发】同样4个字节的浮点数和整数为什么表达的范围有很大差异
- 每日一题--和为s的两个数||和为s的连续整数列
- 计算一个整数二进制位中1的个数