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

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



