求二進位制數中1的個數

2021-09-13 23:56:41 字數 643 閱讀 4849

相信大家都做過給乙個十進位制的整數n,然後判斷這個整數有多少位,最後將每位的數字輸出。利用了整型資料除法的特點。通過相除判斷餘數的值來分析。

而二進位制也可以考慮利用整型資料除法的特點,只是除的是2而不是10,在此就只提供思路而不寫**。

本次主要介紹的是使用位操作來進行的。

我們知道,向右移位操作同樣可以達到相除的目的。唯一不同之處在於,移位後如何判斷是否有1存在。那我們進要進行與1的操作來判斷最後一位是0還是1。

int countbits1(unsigned char ch)

ch>>=1;

} return count;

}

為了簡化這個問題,我們考慮只有乙個1的情況。例如:01000000。

若要判斷二進位制還總有乙個1,可以判斷這個數是否是2的整數次冪來實現。但如何之和這乙個「1」進行判斷呢?

若希望操作後的結果為0,01000000可以和00111111進行與操作。

這樣,要進行的操作是01000000&(01000000-0000001)=01000000&00111111=0.

int getbits2(unsigned char ch)

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...