我有一個位數(shù)組實現(xiàn),其中第0個索引是數(shù)組中第一個字節(jié)的MSB,第8個索引是第二個字節(jié)的MSB,依此類推。找到該位陣列中設(shè)置的第一位的快速方法是什么?我查找的所有相關(guān)解決方案都找到了最低有效位,但是我需要最高有效位。因此,給定0x00A1,我想要8(因為它是左起的第9位)。
3 回答

忽然笑
TA貢獻(xiàn)1806條經(jīng)驗 獲得超5個贊
作為一名性能癡迷者,我嘗試了許多MSB集的變體,以下是我遇到的最快的方法,
unsigned int msb32(unsigned int x)
{
static const unsigned int bval[] =
{0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4};
unsigned int r = 0;
if (x & 0xFFFF0000) { r += 16/1; x >>= 16/1; }
if (x & 0x0000FF00) { r += 16/2; x >>= 16/2; }
if (x & 0x000000F0) { r += 16/4; x >>= 16/4; }
return r + bval[x];
}
- 3 回答
- 0 關(guān)注
- 788 瀏覽
添加回答
舉報
0/150
提交
取消