算法思路:
总体采用分治法
1、先将32位分成两个16位
2、在16位中再分析出8为,依次类推
unsigned ffs(unsigned n)
{
if (n == 0)
return 0;
unsigned c = 32;
if (!(n & 0xffff0000))
{
c -= 16;
n <<= 16;
}
if (!(n & 0xff000000))
{
c -= 8;
n <<= 8;
}
if (!(n & 0xf0000000))
{
c -= 4;
n <<= 4;
}
if (!(n & 0xc0000000))
{
c -= 2;
n <<= 2;
}
if (!(n & 0x80000000))
{
c -= 1;
}
return c;
}