忽然笑
作为一名性能痴迷者,我尝试了许多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];}