LeetCode 位1的個數(位運算)

2021-09-11 23:11:51 字數 750 閱讀 1873

#include

using namespace std;

class solution

}return result;

}//方法2:o(m),m為n的二進位制的位數

//減1操作將最右邊的符號從0變到1,從1變到0,與操作將會移除最右端的1。如果最初n有x個1,那麼經過x次這樣的迭代運算,n將減到0。

inthammingweight2

(uint32_t n)

return count;

}// 方法3:漢明重量,o(1)

// 超詳細解釋

//但要注意溢位問題,有可能報錯,需要將溢位的進行處理!!!

//0x55555555 == = >> 0101 0101 0101 0101 0101 0101 0101 0101,每兩位為一組

//0x33333333 == = >> 0011 0011 0011 0011 0011 0011 0011 0011,每四位為一組

//0x0f0f0f0f == = >> 0000 1111 0000 1111 0000 1111 0000 1111,每八位為一組

//0x01010101 == = >> 0000 0001 0000 0001 0000 0001 0000 0001,將4組8位累加,剛好是32位的前8位,後面24位可以捨去,前面溢位的更可以捨去

inthammingweight

(int32_t i)

};

leetcode 191 位1的個數(位運算)

題目 編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 1 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 00000000000000000000000000001011 中,共有三位...

1的個數 位運算

題目描述 輸入乙個int型的正整數,計算出該int型資料在記憶體中儲存時1的個數。輸入 輸入乙個整數 int型別 輸出 這個數轉換成2進製後,輸出1的個數。樣例輸入 5樣例輸出 2題目分析 題目要求求出十進位制數轉化為二進位制數後1的個數,我們可以用很多方法求出,具體如下 最簡單的方法就是對n位二進...

LeetCode 位運算 位1的個數

編寫乙個函式,輸入是乙個無符號整數,返回其二進位制表示式中數字位數為 1 的個數 也被稱為漢明重量 示例 輸入 00000000000000000000000000001011 輸出 3 解釋 輸入的二進位制串 00000000000000000000000000001011 中,共有三位為 1 輸...