判断一个数中的二进制中有几个1
来源:互联网 发布:台北故宫知乎 编辑:程序博客网 时间:2024/05/11 01:28
介绍几种计算一个数中有几个1的算法
1.我们可以快速写出下面的代码:
int countOne(int n){int count = 0;while (n){if (n&1){count++;}n >>= 1;}return count;}//这种算法没有办法处理负数,否则会产生死循环
2.解决了负数的死循环问题
//我们可以不把数字向右移动,而移动一个表计量
int countOne1(int n){int count = 0;unsigned int flag = 1;while (flag){if (n&flag){count++;}flag <<= 1;}return count;}
//但是这个代码也有个缺陷,就是32为的数要循环移动32次
3.这个算法,数字中有多少个1就移动多少次
int countOne2(int n){int count = 0;while (n){count++;n = (n - 1)&n;}return count;}
4.最后介绍一种速度不一定最快,但是想法很绝妙的算法。就是将n写成二进制形式,然后相邻位相加,重复这个过程,只到剩下一位。
int BitCount(unsigned int n){ n = (n &0x55555555) + ((n >>1) &0x55555555) ; n = (n &0x33333333) + ((n >>2) &0x33333333) ; n = (n &0x0f0f0f0f) + ((n >>4) &0x0f0f0f0f) ; n = (n &0x00ff00ff) + ((n >>8) &0x00ff00ff) ; n = (n &0x0000ffff) + ((n >>16) &0x0000ffff) ; return n ;}
1 0
- 判断一个数中的二进制中有几个1
- 一个数的二进制形式中有几个1
- 求出一个数的二进制形式中有几个1
- 统计一个数的二进制中有几个1--20150926
- 【100题】判断一个数的二进制形式有几个1
- 统计一个二进制数有几个1的方法
- 求一个数字的二进制数有几个1
- 快速的判断一个数的二进制中有多少个1
- 判断一个整数的二进制数有多少个1
- 如何判断一个数的二进制有多少个1
- 判断一个数的二进制有多少个1
- 如何判断一个数的二进制有多少个1
- 计算某个数的二进制中有几个1
- 统计一个数中的二进制数值中有多少…
- 快速的判断一个数的二进制中有多少个1,快速判断x是不是2^n
- 计算一个字符的二进制表示中有几个1
- 判断一个数中二进制中1的数量
- 如何判断一个数二进制中“1”的个数
- 判断元素是否绑定了事件
- Jsp跳出frame框架
- 最近学习qt,一些细节备忘
- algrothm_Further_One
- sybase数据库JDBC连接方式
- 判断一个数中的二进制中有几个1
- 调用系统应用选择联系人并返回联系人信息
- iOS证书申请教程
- 今天开始学Pattern Recognition and Machine Learning (PRML),章节1.6,Information Theory信息论简介
- ui控件的属性一般都是weak,但是内部变量的属性都是强引用,一般我们都是创建一个内部变量,然后让控件引用属性指向内变量
- [Cocos2d-x v3.x官方文档]纹理缓存
- airplay
- opencv直方图
- 今天开始学模式识别与机器学习(PRML),章节5.1,Neural Networks神经网络-前向网络。