您的位置:首页 > 其它

比较练习

2016-06-30 20:41 393 查看
对于两个32位整数a和b,请设计一个算法返回a和b中较大的。但是不能用任何比较判断。若两数相同,返回任意一个。

给定两个整数a和b,请返回较大的数。

测试样例:

1,2

返回:2

思路:用异或的办法,先用>>31来得到符号位,a-b>0 则表示为1

代码如下:

public static void main(String[] args) {
System.out.println(AheBbuxuyaopanduan.panduan(2, 1));
}

public static int panduan(int a,int b){
int c = a - b ;
int scA = sign(c);
int scB = flip(scA);
return (a*scA + b*scB);
}

public static int flip(int n){
return (n^1);
}

public static int sign(int n){
return flip(((n>>31)&1));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: