【位运算】二进制中1的个数
2016-09-04 20:15
239 查看
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
public class Solution { /** * 解法1:数字1每次左移一位,与n进行与运算,结果为1代表n的当前bit位是1 * * @param n * @return */ public int NumberOf1(int n) { int count = 0; int flag = 1; while (flag != 0) { if ((n & flag) != 0) { count++; } flag = flag << 1; } return count; } /** * 解法2:n不为0,代表n中至少存在一个bit位为1,首先个数记一次,然后通过(n-1)&n消除n中一个1,循环这个操作 * * @param n * @return */ public int NumberOf2(int n) { int count = 0; while (n != 0) { ++count; n = (n - 1) & n; } return count; } }
相关文章推荐
- 剑指offer 2.4 位运算,求二进制中1的个数
- 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- 二进制的位运算
- 二进制相关的位运算
- 剑指offer 10题 【位运算】二进制中1的个数
- java_基础_二进制、位运算、移位运算符
- java 二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
- 二进制中1的个数(java)——位运算
- Java二进制,原码、反码、补码、位运算
- 二进制、位运算、位移运算
- 二进制 位运算 看这个链接
- 二进制和位运算
- 计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- Java拾遗:014 - 二进制、进制转换及位运算
- HDU5014 Number Sequence(二进制,位运算)
- 巧用位运算求解二进制中1的个数
- 【转载】计算机程序的思维逻辑 (4) - 整数的二进制表示与位运算
- 23-二进制,位运算
- 二进制(位运算)控制系统权限