读书人

机器指令clz的C兑现

发布时间: 2012-08-26 16:48:06 作者: rapoo

机器指令clz的C实现

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;}

读书人网 >编程

热点推荐