计算一个整数二进制位中1的个数
来源:互联网 发布:python 教务系统 编辑:程序博客网 时间:2024/05/17 08:19
计算一个整数二进制位中1的个数。
普通法
这种方法是每个人都能想出来的,最直观的方法,移位+计数。
int BitCount(unsigned int n){ size_t c =0 ; // 计数器 while (n >0) { if((n &1) ==1) // 当前位是1 ++c ; // 计数器加1 n >>=1 ; // 移位 } return c ;}
注:上面移位相当于除以2,但是移位更高效。
上面的一个问题:如果参数为int类型的话,输入负数的话,可能引起死循环,负数右移一位的话,要保证该数为负数,所以最高位会设置为1,如果一直做右移运算的话,最终这个数字会变成0XFFFFFFF而陷入死循环。
解决可能的死循环 可以让1左移,计算二进制。
位运算方法
不断清除该数最右边的1,同时累加计数器。
清除最右边的1,就 n=n&(n-1)
int Numberof1(int n){ int count = 0; while(n) { n = n&(n-1); ++count; } return count;}
阅读全文
0 0
- 17_7_20:计算一个整数二进制位中1的个数。
- 计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- C/计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- 计算一个整数二进制位中1的个数
- 一个整数二进制位中1的个数
- 挑战面试编程:计算整数二进制位中1的个数
- 元素出栈、入栈顺序的合法性/计算一个整数二进制位中1的个数。
- 剑指offer 10----计算一个整数二进制位中1的个数
- day08之元素出栈、入栈顺序的合法性+计算一个整数二进制位中1的个数
- 计算二进制位中1的个数
- 计算一个整数二进制位中1的个数。要求效率尽可能的高。且能正确求正数和负数的二进制中1的个数。
- 计算一个整数中1的个数...
- 计算二进制位"1"的个数
- 计算二进制位'1'的个数
- 计算二进制位'1'的个数
- HTML入门笔记12-HTML中备注写法
- java错误:java.lang.IncompatibleClassChangeError: Implementing class
- AsyncTask源码解析
- QTabWidget简例/简介及各种问题
- springmvc和struts2的区别
- 计算一个整数二进制位中1的个数
- ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
- 安卓面试(2)
- shell 语句 if for while until case
- 算法_选择排序
- Spring事务管理只对出现运行期异常进行回滚
- Ubiquitous Religions
- 64位Ubuntu系统安装Chrome浏览器
- HTML5基础知识回顾