读书笔记一
1. 获取一个整数的末尾零的个数,如0100, 个数为2
int LowBit(int x)
{
return x & (-x); // return x & (x ^ (x - 1) );
}
{
return x & (-x); // return x & (x ^ (x - 1) );
}
备注:这是从树形数组里面的一个方法,来源于百科。一个数的相反数的二进制:取反加一。
2. 获取nNum的上界二次方,比如 4< 5 < 8 获得8
int inline GetMipNum(int nNum)
{
if(nNum<0)
return -1;
nNum--;
nNum |= nNum >> 1;
nNum |= nNum >> 2;
nNum |= nNum >> 4;
nNum |= nNum >> 8;
nNum |= nNum >> 16;
return nNum+1;
}
{
if(nNum<0)
return -1;
nNum--;
nNum |= nNum >> 1;
nNum |= nNum >> 2;
nNum |= nNum >> 4;
nNum |= nNum >> 8;
nNum |= nNum >> 16;
return nNum+1;
}