二进制中1的个数
来源:互联网 发布:仙鹤刺绣棒球服淘宝 编辑:程序博客网 时间:2024/05/22 13:45
解法一:
首先把i和1做与运算,判断I的最低位是不是为1。接着把1左移一位得到2,在和i做与运算,就能判断i的此地为是不是1…这样反复左移,每次都能判断i的其中一位是不是1。代码如下:
int NumberOf1(int n){ int count = 0; unsigned int flag = 1; while (flag) { if (n&flag)//判断第flag位是不是1 count++; flag = flag << 1;//将flag位左移一位 } return count;}
解法二:
把一个整数减去1,在和原证书做与运算,会把该整数最右边一个1变成0。那么一个整数的二进制表示中有多少个1,就可以进行多少次操作。大大减少了循环次数。代码如下:
int NumberOf1_2(int n){ int count = 0; while (n) { ++count; n = n&(n - 1); } return count;}
阅读全文
0 0
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 二进制中1的个数
- 多研究些架构,少谈些框架(2)-- 微服务和充血模型
- Parcelable序列化对象使用详解
- 前端工程——基础篇
- input等不可选
- View的绘制机制
- 二进制中1的个数
- 手动初始化kafka consumer、producer
- float("inf")
- iOS 集成百度地图
- IAR头文件和文件路径的问题
- mfc、win32 程序的区别
- 统计单词
- 浅谈margin:0 auto元素居中的问题
- 堆排序,用一种清新脱俗的方式