题意 求int补码中1的个数 思路 用&运算 取出每一位的最左边的数字 然后右移 if ((n&1)==1) n>>1; 问题:负数右移最高位补1 改进:比较位左移而不改变原数字 public int NumberOf1(int n) { int ans=0; int temp=0x01; while (temp!=0){ if((n&temp)!=0)ans++; temp=temp<<1; } return ans; }