输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。
我们学习两个位运算:
第一个是右移:
在Java中右移动又分为:
第二个是与运算:
好,知道这两个操作后,我们还需要知道一个常识,Java中int是32位,所以我们将末尾与1做与运算,如果为1则统计,接着不断无符号右移即可!
public int NumberOf1(int n) { int ans = 0; //右移位如何终止,int32位 for(int i=1;i<=32;i++){ if((n&1)==1) ans++; n = n>>>1; } return ans; }
原文:https://www.cnblogs.com/MrSaver/p/12081273.html