求一个32位数中1的个数
来源:互联网 发布:梦幻西游手游脚本源码 编辑:程序博客网 时间:2024/06/06 04:17
废话少说,看分析
例如: 二进制数10010010 = 10000000+10000+10
问题转换为求10000000、10000、10三个二进制数中1的个数,显然每个都为1个,总共就是三个
再看这三个二进制数的特征,显然每个都是2的幂,那么问题转换为如何求一个数是否为2的幂
求一个数是否为2的幂方法就简单多了, 直接给出 if(n&(n-1)){/不/是2的幂} else{是}。
总结:每次计算n&(n-1)可以消除一个1,问题转换为n&(n-1)的次数。
C代码
int Func(int n)
{
int m = n;
int count = 0;
while(m>=1)
{
m = m & (m-1);
count++;
}
return count;
}
0 0
- 求一个32位数中1的个数
- 求一个整形中1 的位数。
- 求一个范围中1的个数
- 求一个二进制数字中1的个数?
- 统计一个32位数的1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个数的二进制数中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个数的二进制表示中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个整数的二进制中1的个数
- 求一个数的二进制表示中1的个数
- 求一个整数的二进制中1的个数
- 链表相关的算法题大汇总 — 数据结构之链表奇思妙想
- Javascript 浮点运算问题分析与解决
- linux下安装protobuf及常见错误
- C++ iterator用法
- UPC:2536 Changlong(二进制技巧)
- 求一个32位数中1的个数
- iOS - Xcode升级到5.1& iOS升级到iOS7.1问题:Undefined symbols for architecture x86_64
- EBS OAF开发中的Java 实体对象(Entity Object)<三>
- cn_office_professional_plus_2010_with_sp1_x86_x64_732114安装密钥
- 《Go语言程序设计》第6章练习
- 港版iPhone
- 数据结构之排序和查找
- 修改Win8.1计算机中设备分组样式
- Codeforces 367A Sereja and Algorithm