【劍指offer】15.二進位制中1的個數
阿新 • • 發佈:2020-12-18
題目描述:
轉換成二進位制解法Java
public int hammingWeight(int n) { String s = Integer.toBinaryString(n); int count = 0; for (int i = 0; i < s.length(); i++){ if (s.charAt(i) == '1'){ count++; } } return count; }
這樣的時間花費很高,相當於計算了兩次,轉換成2進位制一次,最後遍歷一次
高效率解法
public int hammingWeightQuick(int n) {
int res = 0;
while(n != 0) {
//與是與二進位制的最後一位數相與
res += n & 1;
//移位操作也是以二進位制數進行移位
n >>>= 1;
}
return res;
}
掌握如何用&、>>等運算子處理二進位制資料