題目描述
輸入一個整數(shù),輸出該數(shù)二進制表示中1的個數(shù)峰尝。其中負數(shù)用補碼表示偏窝。
分析:考慮將該整數(shù)和二進制1進行與運算,如果結(jié)果不為0境析,計數(shù)囚枪;
我的Code如下:
public class Solution {
public int NumberOf1(int n) {
int count = 0;
int flag = 1;
while(flag != 0){
if((n & flag) != 0){
count++;
}
//這里flag為二進制數(shù)派诬,初始值位:0000 0000 0000 0000 0000 0000 0000 0001
//循環(huán)中讓1每次右移一位
flag = flag << 1;
}
return count;
}
}
~: 非運算
^:異或
&:與
|: 或
>>:有符號右移
<<:左移
>>>:無符號右移