求一个数二进制位中有多少个 1 的不同解法
2017-10-20 20:39
176 查看
*返回一个数的二进制表达中1的个数。*#include<stdio.h>int main(){ unsigned int i; scanf("%d",&i); printf("%d的二进制表达中有 %d 个1",i,count_one_bits(i)); return 0;}int count_one_bits(unsigned int m){ int n,count; // 返回 1的位数 n = m; count = 0; while(n % 2 == 0) n = n / 2; while(n % 2 == 1) { count++; do { if (n != 0) n = n / 2; else break; } while(n % 2 == 0); } return count;}这就是最容易想到的办法,不断地除2模2取余,下面给出另外一种方法(省略部分语句)...i = 32;while(i--){ if(num & 1 == 1) count++; num = num>>1;}这种方法就是向右移位,使最低位&上1进行判断,还有一种更为高效的方法int count_one_bit(int num){ int count = 0; while(num) { count++; //只要一个数不为0,则二进制表达中至少有一个1 num = num & (num-1);//没执行一次这条语句,其实就是使该数最低位的一个1置成0 } return count;}
本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1703820
本文出自 “敲完代码好睡觉zzz” 博客,请务必保留此出处http://2627lounuo.blog.51cto.com/10696599/1703820
相关文章推荐
- 求一个数二进制位中有多少个 1 的不同解法
- 给一个正整数n,求从1到n能构造多少种不同形状的二叉查找树(BST)
- 红、黄、蓝三色的球各8个,从中取出9个,要求每种颜色的球至少一个,问有多少种不同的取法?
- “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。
- 答复:“判断一个整数的二进制位中有多少个1”的提问
- 一个人走一个n阶的楼梯,他一步可以走1阶,2阶,3阶,这三种情况,问走完这n阶的楼梯共有多少种不同的走法?
- 一个小题目的三种不同的解法
- 求一个数的二进制中有多少个1的两种解法
- 给定一个英文原文,统计文件里面一共有多少个不同的英文单词
- 二进制中1的个数,二进制奇偶位的二进制序列,一个整数的每一位,两个整数二进制中有多少个不同位
- [导入]给定一个英文原文,统计文件里面一共有多少个不同的英文单词
- mysql语句 一个表统计每天产生的不同类型数据 根据类型字段 统计每天有多少
- 求一个数的二进制中有多少个1的最优解法
- POJ 1611 The Suspects 并查集 (统计不同一个树的其他树有多少个)
- 1.输出一个整数的每一位。2. 编程实现: 两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同?
- POJ 1611 The Suspects 并查集 (统计不同一个树的其他树有多少个)
- POJ 1611 The Suspects 并查集 (统计不同一个树的其他树有多少个)
- 把一张面值为一元的纸币,换成一分,二分,五分的硬币,共有多少种换法?编程输出每一种不同的换法。 如果每种硬币至少有一个,编程求出所需硬币最少的数目及换法。
- Oracle中一个列转行例子的几种不同解法
- POJ 1611 The Suspects 并查集 (统计不同一个树的其他树有多少个)