62,614
社区成员
发帖
与我相关
我的任务
分享
System.out.println((((a >>> 31 == 0) && (b >>> 31 == 1))|
(((a >>> 31)^(b >>> 31))==0)&&(((a-b)>>>31)==0))?"a>=b":"a<b");//同符号的相减;异号时a为正,则a>=b。
public class Bigger {
public static void main(String args[]){
int a = -2147483648;
int b = 2147483647;
String[] strArray = {"a>=b", "a<b"};
int i = (int)((long)a-(long)b >>> 63); System.out.println(strArray[i]);
}
}
public class getMAX{
public static void main(String[] args)
{
int x=0,y=0;
/* 经过以下几组数据测试通过:请删除下列任意一组注释或自拟数据进行测试 */
// x=-2147483648 ;y=2147483647;
// x=-2147483648 ;y=-2147483647;
// x=2147483647 ;y=2147483647;
// x=100 ;y=0;
// x=100 ;y=-100;
int a=1-((x/2-y/2)>>>31); //x/2大于或等于y/2时为1,否则为0
int b=1/(Math.abs(x/2-y/2)+1); //x/2等于y/2时为1,否则为0
int c=x%2; //x/2的余数
int d=y%2; //y/2的余数
int max =x*(a-(1-c)*b)+y*(1-(a-(1-c)*b));
System.out.println("a="+a+";b="+b+";c="+c+";d="+d+";MAX="+max);
}
}