計算乙個二進位制數中數字「1」的個數(位運算)

2021-09-02 11:45:45 字數 408 閱讀 6331

int

numberofone

(unsigned value )

value >>= 1 即 value = value >> 1;

賦值運算右邊的 value >> 1 意思是把無符號數value進行向右1位的邏輯移位,然後再賦值給左邊的value。

假設value原來等於10010110,則向右移1位後變成01001011。

這樣把 value >>=1 作為 for 迴圈的調整語句,即可依次把每個數字都放到最低位上去進行運算。

value & 1 即把 value 和 1 進行and操作,如果兩個個位都是1,結果為1,否則結果為0。

這樣就可以很快捷的檢驗每次位移後的數字的最後一位是否為1,如果是1,則結果為1,否則結果為0。

計算乙個整數二進位制中1的個數

這是來自牛客網關於乙個二進位制的運算 我的思路為每次和1 2 4 進行按位與運算就可得到二進位制中1的個數 如下 1 2 new coder ponint to offer 11 3 find bit 1 num of a nunber 4 56 include 7 include 8 9int f...

計算乙個整數二進位制中1的個數

這是來自牛客網關於乙個二進位制的運算 我的思路為每次和1 2 4 進行按位與運算就可得到二進位制中1的個數 如下 1 2 new coder ponint to offer 11 3 find bit 1 num of a nunber 4 56 include 7 include 8 9int f...

求乙個數字二進位制中 1 的個數

任意給定乙個 32 位無符號的整數 n,計算 n 的二進位制表示中 1 的個數,比如 n 3 011 時,返回 2 通過移位解決,每次向右移一位 1 然後判斷最後一位是不是 1 1 最多迴圈 32 次 int bitcount unsigned int n n n 1 return count 使用...