求二進位制數中1的個數

2021-07-30 23:20:07 字數 413 閱讀 4827

給定乙個乙個位元組(8位)的無符號整型數,求它的二進位制數表示中1的個數。

分析:乙個比較容易想到的方法是從低位到高位判斷是否為1,每得到一位就把這個數右移,這樣只需取最低位即可。時間複雜度是o(logv),其中logv是這個數的位數。如果還想進一步降低時間複雜度,我們可以只關注那些數字上為1的位。對於乙個二進位制數(比如11010000),我們可以這樣找到它裡面的1:把這個數減一(11010000 - 1 = 11001111),這樣做是為了將最低位的乙個1找到後並把這個1變為0(將這倆數按位與即可),同時我們計數器記下這個找到的最低位的1。以此類推直到這個數變為0,這樣我們既找到了所有的1,又使得時間複雜度降為o(1的個數)。

int numsofone(byte v)

return count;

}

求二進位制數中1的個數

解法一 可以舉乙個八位的二進位制例子來進行分析。對於二進位制操作,我們知道,除以乙個2,原來的數字將會減少乙個0。如果除的過程中有餘,那麼就表示當前位置有乙個1。以10 100 010為例 第一次除以2時,商為1 010 001,余為0。第二次除以2時,商為101 000,余為1。因此,可以考慮利用...

求二進位制數中1的個數

對於乙個位元組 8bit 的變數,求其二進位制表示中 1 的個數,要求演算法的執行效率盡可能地高。解法一 可以舉乙個八位的二進位制例子來進行分析。對於二進位制操作,我們知道,除以乙個2,原來的數字將會減少乙個0。如果除的過程中有餘,那麼就表示當前位置有乙個1。int count int v int ...

求二進位制數中1的個數

對於乙個位元組 8bit 的無符號整型變數,求其二進位制表示中 1 的個數。c codes as below using system class program static void main string args program program new program for int i 0...