牛客网算法进阶班 第一课
题目1:给定两个数a和b,如何不用比较运算符,返回较大的数。
public class Code_01_GetMax {
public static void main(String[] args){
System.out.println(getMax1(800,-700));
}
public static int sign(int n){
return (n>>31 & 1); //n的符号位与1相与 二进制中符号位0代表正数,1代表负数
} //n>0 : 0&1-->0 ,n<0 : 1&1-->1
public static int flip(int n){
return (n ^ 1); //异或,相同0,不同1
}
public static int getMax1(int a, int b){
int c = a - b;
int sca = sign(c);
int scb = flip(sca);
return a * scb + b * sca;
}
}