整數的二進位制表示式中有多少個1

2021-08-27 15:58:04 字數 542 閱讀 8085

給定乙個32位整數n,可為0,可為正,也可為負,返回該整數二進位制表達中1的個數

整數n每次進行無符號右移一位,檢查最右邊的bit是否為1來進行統計,**如下:

public int count1(int n)

return res;

}

上面這個方法在最複雜的情況下要經過32次迴圈

public int count2(int n)

return res;

}

public int count3(int n)

return res;

}

每次進行n-=n&(~n+1)操作的時候,是移除最右側的1的過程,等號右邊n&(~n+1)的含義是得到n中最右側的1,這個操作在位運算的題目中常出現。例如:n=01000100,n&(~n+1)=00000100,n-n&(~n+1)=01000000。

public int count4(int n)

整數的二進位制表達中有多少個1

給定乙個32位的整數n,可為0,可為正,也可為負,返回該整數二進位制表達中1的個數。最簡單的做法就是求出乙個整數如何得到它的二進位制數。以整數5為例。用5除以2,取餘的結果為1時代表二進位制表達中含有乙個1,此時的被除數變為5 2。迴圈直到被除數為0,迴圈結束。注意 負數的二進位制表示的首位為1.在...

兩個整數二進位制表達中,有多少個位 bit 不同

程式設計實現 兩個int 32 位 整數m和 n的二進位制表達中,有多少個位 bit 不同?輸入例子 1999 2299 輸出例子 7 1 利用移位運算,將32位二進位制數儲存在陣列中,然後比較兩個陣列中各個元素是否相同。如下 include includeint main for i 0 i 32...

微創 求整數的二進位制表示中有多少個1

現有一整數n,求n用二進位制表示中有多少個1?解法一的步驟 1 判定n是否為0,若為0,計算結束 否則繼續計算 2 取n mod 2的值,若為1,計數器加1 3 對n進行除2,並返回到步驟 1 如下 int count1bits int n while 0 n return count 解法二 先來...