2 1 1 每日一練 求二進位制數中1的個數

2021-06-20 18:30:45 字數 597 閱讀 9227

求乙個8位無符號整型變數的二進位制形式中「1」的個數,要求演算法盡可能效率高。

乙個整數的二進位制形式中除了「0」 就是「1」;如何計算「1」的個數,可以聯想到計算機組成原理中的除法運算的實質,除法運算實質就是右移一位二進位制。

先將整數寫成二進位制形式,然後判斷最後一位是否是「1」,若是,則計數器加一,否則,繼續,然後右移一位,直到判斷所有的數字。

判斷最後一位是否是「1「,直接聯想到的就是採用與操作,將其與0x01與操作,判斷其結果,若為」1「,則最後一位是」1「,否則是」0「

這是一種判斷方法,想一想,右移一位,相當於除以2,因此可用除法代替,讓整型的數除以2,若餘數為1,則說明該數的二進位制形式結尾是」1",,否則說明二進位制形式結尾是「0」

測試**如下:

#include using namespace std;

int count1(int v)

v = v/2;

} return num;

}int count2(int v)

return num;

}int main()

{ int v;

v=3;

cout<<"num of "<



求二進位制數中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...