題目描述
輸入一個整數,輸出該數二進制表示中1的個數。其中負數用補碼表示。
分析:
可以通過每次與1,判斷最後一位是否為1,然後右移。移動的次數為位數,與機器字長有關,可以通過sizeof得出字結束,然後乘以8.
代碼:
int NumberOf1(int n) {
if(n==0) return 0;
int bitLen = sizeof(n)*8;
int count = 0;
for(int i=0;i<bitLen;i++){
if((n & 1) == 1)
count++;
n = n>>1;
}
return count;
}