用位运算求给定整数的二进制表示中1的个数
来源:互联网 发布:淘宝 修改差评 编辑:程序博客网 时间:2024/05/16 10:18
用位运算求给定整数的二进制表示中1的个数
考虑到n-1会把n的二进制表示中最低位的1置0并把其后的所有0置1,同时不改变此位置前的所有位,那么n&(n-1)即可消除这个最低位的1。这样便有了比顺序枚举所有位更快的算法:循环消除最低位的1,循环次数即所求1的个数。此算法的时间复杂度为O(n的二进制表示中的1的个数),最坏情况下的复杂度O(n的二进制表示的总位数)。
//计算n的二进制表示中1的个数
int count1(unsignedint n)
{
intr = 0;
while(n)
{
n &= n-1; //每运算一次消去最后一个1
r++;
}
returnr;
}
ont-size:9.0pt'>
- 用位运算求给定整数的二进制表示中1的个数
- 位运算之求整数二进制表示中1的个数
- 【编程之美】任意给定一个32位无符号整数n,求n的二进制表示中1的个数
- 位运算--一个整数的二进制表示中1的个数
- 求整数N的二进制表示中1的个数
- 求一个整数的二进制表示中1的个数
- C语言位运算应用一:求一个数的二进制表示中1的个数
- 位运算实现反转字节和求二进制整数中1的个数(无循环)
- 给定一个整数,输出这个整数二进制表示中1的个数
- 求32位整数二进制中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 整数二进制表示中1的个数
- 位运算--求一个 数二进制中1的个数
- C语言求一个整数的二进制形式表示中1的个数,用函数实现
- strcpy,memcpy,sprintf的区别及前两个函数的实现
- std::vector实现原理及特定场景下的改进
- 高字节低字节问题
- 请实现两棵树是否相等的比较,相等返回0,否则返回其他值,并说明算法复杂度。
- 用位运算判定给定的整数是不是2的整数次幂
- 用位运算求给定整数的二进制表示中1的个数
- struts2异常处理
- 给定A, B两个整数,不使用除法和取模运算,求A/B的商和余数
- 安卓UI组件之ListView详解
- 挤掉苹果,大神登上世界最有价值科技公司--Apple、Google 恩仇录大汇整
- 在一个有序数组中,有些元素重复出现。输入一个数值,求此值在数组中重复的次数
- C++中一个容易被忽视的名字查找规则
- poj 3034 Whac-a-Mole(dp)
- 异常处理