标签:style blog http java color strong
问题描述:
输入一个整数,返回其二进制表示中最低的一位为1的下标值。
很多CPU都在硬件层面直接提供该指令,例如,i386的BSF指令。但是,如果硬件没有提供该指令,又当如何。来看kernel中的算法:
应用分治思想进行依序判断.....
1 int __ffs(int x) 2 { 3 int r = 0; //r:用来标记下标,初始化为0。 4 5 if (!x) 6 return 0; 7 if (!(x & 0xffff)) { //即0 1111 1111 1111 1111 8 x >>= 16; 9 r += 16; 10 } 11 if (!(x & 0xff)) { //即0 1111 1111 12 x >>= 8; 13 r += 8; 14 } 15 if (!(x & 0xf)) { //即0 1111 16 x >>= 4; 17 r += 4; 18 } 19 if (!(x & 3)) { //0x03————即0011 20 x >>= 2; 21 r += 2; 22 } 23 if (!(x & 1)) { //0x01 24 x >>= 1; 25 r += 1; 26 } 27 return r; 28 }
标签:style blog http java color strong
原文地址:http://www.cnblogs.com/xymqx/p/3702998.html