在面试的时候遇到一题,题目如本文标题,当时没答出来,只想到可能会利用位运算,但具体代码没想出来,后来在网上也找有同样的问题,摘录其中一段代码:
int
Max(
int
a ,
int
b )
{
int MASK = 0x7fffffff;
int z = (a>>31) - (b>>31) + (((a&MASK) - (b&MASK))>>31);
z = (z+1)*(z+2)*(3-2*z)/6;
return z*a+(1-z)*b;
}
{
int MASK = 0x7fffffff;
int z = (a>>31) - (b>>31) + (((a&MASK) - (b&MASK))>>31);
z = (z+1)*(z+2)*(3-2*z)/6;
return z*a+(1-z)*b;
}