计算一个数的二进制表示中0和1个数的方法
来源:互联网 发布:尚德自考靠谱 知乎 编辑:程序博客网 时间:2024/06/07 02:20
常见的一个方法是:
x&(x-1) 的作用是对一个数中二进制1的个数进行统计
x|(x+1) 的作用是对一个数中二进制0的个数进行统计
今天做牛客网上的题,又学习到了一个新的算法,叫做平行算法,用来计算二进制的1的个数
intBitCount(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 ;}
速度不一定最快,但是想法绝对巧妙。 说一下其中奥妙,其实很简单,先将n写成二进制形式,然后相邻位相加,重复这个过程,直到只剩下一位。
以217(11011001)为例,有图有真相,下面的图足以说明一切了。217的二进制表示中有5个1。
阅读全文
0 0
- 计算一个数的二进制表示中0和1个数的方法
- 计算一个数的二进制表示中1的个数
- 如何计算一个数的二进制表示中的0和1的个数,包括负数
- 递归方法计算数N的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 求一个数的二进制表示中1的个数
- 统计一个数的二进制表示中1的个数
- 求一个数二进制表示中1的个数
- 统计一个数二进制表示中1的个数
- 计算一个数的二进制数中1的个数
- 编写一个递归方法,返回数N的二进制表示中1的个数
- 编写一个递归方法,它返回数N的二进制表示中1的个数
- 编写一个递归方法,返回数N的二进制表示中1的个数
- 求一个数二进制表示法中1的个数诸多方法
- 求一个数二进制表示法中1的个数诸多方法
- 求一个数二进制表示法中1的个数诸多方法 .
- 计算一个数的二进制中1的个数
- 计算一个数二进制中1的个数
- 高级I/O之多路转接epoll
- SwipeRefreshLayout 上拉刷新和下拉刷新
- iOS逆向:在任意app上开启malloc stack追踪内存来源
- CRC循环冗余校验
- Intellij学习笔记 --- Ubuntu将Intellij图标固定到工具栏
- 计算一个数的二进制表示中0和1个数的方法
- 电子词典c语言图形界面
- button 提交后验证不通过仍然提交问题
- 网络地址转换NAT、虚拟专用网络VPN、代理服务器
- hibernate多对多注解开发实例
- Android Studio中Gradle使用详解
- 402. Remove K Digits
- PHP本地进行API接口测试
- 混合APP开发之5+API上传图片过大导致上传失败的解决方式