程式設計之美2 1 求二進位制中1的個數

2021-06-25 22:12:22 字數 591 閱讀 3948

最近一段的時間,一直在看程式設計之美之類的演算法書籍,剛開始看程式設計之美,感覺到難度太大,有時候也不願意去翻動這本書,不過,經過一段時間的修煉,我也徹底的喜歡上這本書了, 書中的演算法涉及到很多方面,樹,鍊錶,位運算,陣列,hash表應用等等。

由於最近事情也忙得差不多了,我重新寫了一遍程式設計之美中的演算法,在這裡記錄下來,以便以後閱讀方便。

第一道題從2.1寫起,這道題目難度不是很大,首先,給出這個題目的函式宣告:

/*2.1 求二進位制中1的個數*/

int dutcountof1inbin_1(unsigned int);

int dutcountof1inbin_2(unsigned int);

這裡給出的是兩種非常常見也非常好的演算法實現,**中已經加上了注釋,所以,我直接貼出**:

/*方法一*/

int dutcountof1inbin_1(unsigned int v)

return count;

}/*方法二*/

int dutcountof1inbin_2(unsigned int v)

求二進位制中1的個數(程式設計之美2 1)

行文脈絡 解法一 除法 解法二 移位 解法三 高效移位 解法四 查表 擴充套件問題 異或後轉化為該問題 對於乙個位元組 8bit 的變數,求其二進位制 1 的個數。例如6 二進位制0000 0110 1 的個數為2,要求演算法效率盡量高。解法一 對於二進位制數來說,除乙個2,就少一位,可以判斷這個少...

程式設計之美2 1 求二進位制樹中1的個數

問題 對乙個4位元組的無符號整形變數,求其二進位制表示中 1 的個數,要求演算法的執行效率盡可能高。解法一 位遍曆法 使用位操作,移位後來判斷是否有1存在,利用v 0x01和v 1。解法二 1遍曆法 在每次判斷中只與1的個數進行判斷,利用v v 1。解法三 二分累加法 依次連續兩位相加,連續四位相加...

程式設計之美2 1 二進位制中1的個數

int numberof 1 int n return count int is 2n int n 1 求這兩個數的異或 兩個數不同的位置都為1,這些位置都需要改變 2 統計異或結果中1的個數 int stepchangeto int m,int n int add int num1,int num...