數32位 unsigned int中1的個數

2022-09-17 07:42:12 字數 1244 閱讀 7414

參考文章:

最簡單的方法:

int bitcount0(unsigned int

n)

return

c ;}

消除統計法

int bitcount2(unsigned int

n)

return

c ;}

8bit查表法

unsigned int table[256] =; 

int bitcount2(unsigned int

n)

巧妙轉換法

int bitcount3(unsigned int

n)

#include 

typedef unsigned int uint32;

const uint32 m1  = 0x55555555;  // 01010101010101010101010101010101

const uint32 m2  = 0x33333333;  // 00110011001100110011001100110011

const uint32 m4  = 0x0f0f0f0f;  // 00001111000011110000111100001111

const uint32 m8  = 0x00ff00ff;  // 00000000111111110000000011111111

const uint32 m16 = 0x0000ffff;  // 00000000000000001111111111111111

const uint32 h01 = 0x01010101;  // the sum of 256 to the power of 0, 1, 2, 3

int

popcount_2(uint32 x)

inline short

popcount_3(uint32 x)

//除了指令法,這種最快

指令法

//sse - 4,編譯時加入 -msse4[相當於4.1 + 4.2]

#include

unsigned int n =127

;unsigned

int bitcount = _mm_popcnt_u32(n) ;

關於sse有乙個很好的學習資料,各個sse版本裡的函式及其功能!

反轉32 位數

筆試的時候遇見一道這樣的題目,不會做.回來趕緊上網找.感覺牛人就是牛人.這樣的演算法我為啥就是想不出來呢 把乙個32位的數按位反轉,就是第32位轉到第1位,第31位轉到第2位 什麼樣的演算法最節省效率?參考http www.yuanma.org data 2007 0723 article 2763...

32位隨機數

軟體架構師何志丹 宣告 class dll sn ext class crand32 優點 一,不需要隨機種子,多個物件會隨機不同的種子。二,範圍和uint的範圍同 實現int crand32 s iobjnum 0 crand32 crand32 unsigned int crand32 rand...

反轉32位數

1 問題 把乙個32位的數按位反轉,就是第32位轉到第1位,第31位轉到第2位 什麼樣的演算法最節省效率?2 解答 un signed int bit reverse unsigned int n 第一行 為奇偶位相互交換 第二行為以兩位為一單元,奇偶單元進行交換 第三行為以四位為一單元,奇偶單元進...