publicstaticintflip(int n) {
return n ^ 1;
}
publicstaticintsign(int n) {
return flip((n >> 31) & 1);
}
publicstaticintgetMax1(int a, int b) {
int c = a - b;
int scA = sign(c);
int scB = flip(scA);
return a * scA + b * scB;
}
方法二代码如下:
publicstaticintgetMax2(int a, int b) {
int c = a - b;
int sa = sign(a);
int sb = sign(b);
int sc = sign(c);
int difSab = sa ^ sb;
int sameSab = flip(difSab);
int returnA = difSab * sa + sameSab * sc;
int returnB = flip(returnA);
return a * returnA + b * returnB;
}