clz:查找一个数据x前置0的个数。
/**
* 二分查找1的位置
*/
int clzInC(unsigned int x)
{
if (!x) return 32;
int e = 31;
//1111 1111 1111 1111 0000 0000 0000 0000
if (x&0xFFFF0000) { e -=16; x >>=16; }
//0000 0000 0000 0000 1111 1111 0000 0000
if (x&0x0000FF00) { e -= 8; x >>= 8; }
//0000 0000 0000 0000 0000 0000 1111 0000
if (x&0x000000F0) { e -= 4; x >>= 4; }
//0000 0000 0000 0000 0000 0000 0000 1100
if (x&0x0000000C) { e -= 2; x >>= 2; }
//0000 0000 0000 0000 0000 0000 0000 0010
if (x&0x00000002) { e -= 1; }
return e;
}

5324

被折叠的 条评论
为什么被折叠?



