您的位置:首页 > 其它

比较两个数的大小,要求不能用if,<,>,?

2014-10-30 10:41 267 查看
1.去平均值法:

int Max(int a, int b)
{
return (a+b+abs(a-b))/2;
//如果返回小者:
//return (a+b-abs(a-b))/2;
}


2.移位法

int Max(int a, int b)
{
int result[2] = {a,b};  //移位法只需判断a-b的符号位即可,用数组来存,高明!
int flag = ((a-b)>>31) & 0x1;
return result[flag];
}


int Max(int a, int b)
{
int flag = ((a-b)>>31) & 0x1;
return a - (a-b)*flag;  //运用flag是否为0来进行加减,高明!
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐