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来进行加减,高明!
}
本文介绍了两种用于求两个整数中最大值的算法:去平均值法和移位法。去平均值法通过数学运算得出结果,而移位法则巧妙地利用了位运算和条件判断。这两种方法都不使用传统的比较运算符,展示了编程技巧的魅力。

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



