求二進位制中數1的個數

2021-07-09 06:28:36 字數 650 閱讀 8234

**如下

#includeusing namespace std;

/*1、

int num1(int n)

n /= 2;

} return count;}*/

/*2、

int num1(int n)

return count;}*/

/*3、

int num1(int n)

return count;}*/

//4、

int num1(int n);

return table[n];

}int main()

其中1、是效率最低的演算法,而2、使用了位運算效率更高,3、呢則是根據理論:把乙個整數減去1,在和原來的整數做與運算,可以將該整數最右邊乙個1變成0。

據此可以通過該方法來判斷1的數目。這樣一來,演算法的複雜度就只與1的個數有關了。最後4、是用時間換空間的一種方法,因為8位整型變數只有256中情況,所以可以把它們都列出來,放在陣列裡,進行隨機讀取。這樣複雜度就變成o(1)了。在需要大量使用的情況中,這是一種不錯的選擇,然而但數目很多時,會消耗巨大的空間。這也教會我們,同樣的要求,同樣的功能,在不一樣的環境中,最適的演算法是不同的,要根據相應的concrete情況來決議相匹配的演算法。

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