LeetCode上位1的個數(shù),簡單難度,記錄下解題思路
傳入一個32位的二進制數(shù),之后要求這個數(shù)內(nèi)1的個數(shù),當然可以轉(zhuǎn)成字符串之后用循環(huán)或者正則表達式來匹配獲取,這里使用下位運算,平時正好用得少
已知傳入的數(shù)總是32位二進制串,用一個掩碼從最后一位開始依次比較當前位是否為1,為1則記錄下來,不為就跳過,最后掩碼還要移動,進行下次計算
var hammingWeight = function(n) {
// 計數(shù)位
let count = 0;
// 掩碼
let mask = 1;
// 從最后一位開始比較
for(let i = 0;i < 32;i++){
if((n & mask) != 0){
count++;
}
// 掩碼位移
mask <<= 1;
}
return count;
};