1、题目 2、解法 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; } } 利用了位运算符&,相同位置都为1,等于1,因为还有负数,所以不用右移运算符,会造成死循环,也就是结果一直是-1。 3、知识点 1、原码、反码、补码的概念 添加链接描述 2、负数移位运算 添加链接描述 添加链接描述