两个int型数据进行比较,不用任何“if”, “? :”, “switch” or other judgement statements。实现如下:
int
max_int(
int
a,
int
b)
...
{
b = a - b;
a -= b & (b>>31);
return a;
}
b = a - b;
a -= b & (b>>31);
return a;
}
当b<0的时候以补码存,故最高位是1
所以右移31位b>>31其实就是最高位的值
b>=0时候最高位为0
所以b跟1与时候为b ,a=a-(a-b)=b
b跟1作与运算时候为0 ,相当于a=a-0=a