求二進位制數中1的個數

2021-05-27 07:47:10 字數 711 閱讀 8659

對於乙個位元組(8bit)的無符號整型變數,求其二進位制表示中"1"的個數。

c# codes as below:

using system;

class program

static void main(string args)

program program = new program();

for (int i = 0; i <= 32; i++)

console.writeline(program.count3(i));

console.readkey();

public int count1(int i)

int count = 0;

while (i != 0)

count++;

i = i & (i - 1);

return count;

public int count2(int i)

int count = 0;

while (i != 0)

count += i & 1;

i = i >> 1;

return count;

public int count3(int i)

int count = 0;

while (i != 0)

count += i % 2;

i = i / 2;

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的個數

解法一 除2看餘數 int count byte v v v 2 return num 解法二 使用位操作 int count byte v return num 解法三 不斷清除n的二進位制表示中最右邊的1 為什麼n n 1 能清除最右邊的1呢?因為從二進位制的角度講,n相當於在n 1的最低位加上...