针对int等的表示而成的位操作,但是现代电脑已经不在乎这点,大可不必拘泥与此,但是对于写底层库和娱乐来讲非常不错:
1, abs(int arg)
int shift = sizeof(int)*8 - 1;
int mask = arg>>shift;
return (arg+mask)^mask;2, min( int x,int y)
return y + (x-y)&-(x<y);3, determin if an unsigned int is power of 2
return arg&(arg-1)==0;4, 一个int里面有多少1
unsigned int CountOne(int arg)
...{
unsigned int result = 0;
for(; arg; result++)
...{
arg&=arg-1;
} return result;
}
}5, 取下一个比一个unsigned int大的2的n次幂
unsigned int Next2Power(unsigned int arg)
...{
arg--;
arg|=arg>>1;
arg|=arg>>2;
arg|=arg>>4;
arg|=arg>>8;
arg|=arg>>16;
arg++;
return arg;
}

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



