面试题:二进制中1的个数
题目描述:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
方法1:将二进制数右移(输入为负数时会引起死循环)
方法2:将1左移
public class Solution { public int NumberOf1(int n) { int count = 0; int flag = 1; while(flag != 0){ if((n&flag) != 0) count++; flag = flag << 1; } return count; } }
方法3:(n-1)&n
public class Solution { public int NumberOf1(int n) { int count = 0; while(n != 0){ n = (n - 1) & n; count++; } return count; } }