编写一个方法,条件是不使用if-else、?-:等判断和比较运算符
第一种方法
public int getMax(int a, int b) {
int c = a - b;
//取出a-b的符号位
c = c >> 31;
/*
如果c是负数,说明a<b,那么移位之后c表示的是-1,
那么a加上比b少的那部分就是最大值了
如果c是正数,说明a>b,那么移位之后c表示的是0,
那么直接返回a就是最大值了
*/
return a + c*(a-b);
}
第二种方法
public int getMax(int a, int b) {
b = a - b;
a -= b & (b>>31);
/*
如果b是负数,说明a<b,那么移位之后b表示的是-1,
那么进行与操作后,得到的就是a比b小的那一部分,并且以负数表示
即:a = a - (a - b)
如果b是正数,说明a>b,那么移位之后b表示的是0,
那么进行与操作后,得到的就是0
即:a = a - 0
*/
return a;
}