如何求两个int型的最大值 两个整型数,不准用if 、switch 、?:等判断语句求出两者最大值。不能使用api 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 return a1 > a2; public static int max(int a[]) { return a[((a[0] - a[1]) >> 31) & 1];// }在网上找到了一种,别的方法不知道还有没有 int x=10;int y=8;int max=y*((x-y)>>>31)+x*((y-x)>>>31); public static int max(int a, int b) { int[] nums = { a, b }; return nums[b / a % 2]; } 若 a=2;b=4这个方法是不是有点问题 int max=x*(1-((x-y)>>>31))+y*((x-y)>>>31);这个没有问题了. 这就是刁难人的问题 可惜我就算看了int max=x*(1-((x-y)>>>31))+y*((x-y)>>>31);也不明白为啥可以这么搞。。哎。。 x-y>>>31不是把x-y的符号位取出来了吗?如果x>=y则x-y>>>31就是0,否则是1 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]); } } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/justinavril/archive/2009/04/29/4138182.aspx 挺无聊的,就像吃饭的时候有快子不能用,非让我们用手抓一样,真不爽!附一下二楼的那个 return a1 > a2; 头脑比较简单! >>>是什么来的,麻烦告诉一下 arr[]=[a,b]return a[(int)(b>a)]; 学习啦,我只知道return a>b int a,b;Math.Max(a,b);这个不知道算不算。 return i>j?i:j用三目运算就可以啦 int max=x*(1-((x-y)>>>31))+y*((x-y)>>>31); 顶这个! 简化为:int max=x-(x-y)*(x-y>>>31); 三目运算符很实用的,赞一下。 public class Max_min { double a ,b,c; c = (a > b ? a : b); return c ; } 楼上几位的位运算也赞一下吧,达到底层确实很好的。 其实三元操作是最快的,因为一般CPU都直接有对应这个操作的机器码。 static int Max(int a, int b){ return (a + b + ((a - b >> 31) ^ (a - b)) - (a - b >> 31)) >> 1;} int max=x*(1+((x-y)>>31))+y*((x-y)>>31)*(-1); 这行不? java里面不能将boolean类型转换为int型的。 int c=a-b;int MAX=unsigned(c)>>(sizeof(int)*8-1);这题很经典。。 int a,b;还有一种方法:int MAX=((a+b)+abs(a-b))/2; ((x-y)>>31)*-y + ((y-x)>>31)*-x + (((x-y)^(y-x)^0x80000000)>>31)*-x; 我也给你们出个问题不准用java 写个servlet int []a = {8,3};Arrays.sort(a);return a[1]; 这题其实挺无聊的,换个思路做做~int max(int a, int b){int ret[2] = {a, b};return ret[a < b];} 楼上的 是用java 不是C++boolean是不会转成int的 纠结一个简单的java小程序 javaSE之有才人士帮帮我吧? 关于JMF的Processor的问题 一道算法问题!求解 我是不是很懒啊《,,??? 新人提问,请高手帮忙,谢谢! 一个多线程的问题? 怎么用JDBC运行MS-SQL2000的SQL数据库脚本呢? 在指定的矩形区域中显示字符信息 请看看(20分) 关于用Runtime.getRuntime().exec(cmd)等待一段时间后强制结束的问题 java 如何让jtextarea只允许复制粘贴,禁止手动编辑键盘输入等~坐等高手~谢了~
return a1 > a2;
public static int max(int a[]) {
return a[((a[0] - a[1]) >> 31) & 1];//
}在网上找到了一种,
别的方法不知道还有没有
int y=8;
int max=y*((x-y)>>>31)+x*((y-x)>>>31);
public static int max(int a, int b) {
int[] nums = { a, b };
return nums[b / a % 2];
}
若 a=2;b=4这个方法是不是有点问题
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]);
}
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/justinavril/archive/2009/04/29/4138182.aspx
return a[(int)(b>a)];
Math.Max(a,b);
这个不知道算不算。
用三目运算就可以啦
顶这个!
简化为:
int max=x-(x-y)*(x-y>>>31);
public class Max_min
{
double a ,b,c;
c = (a > b ? a : b);
return c ;
}
楼上几位的位运算也赞一下吧,达到底层确实很好的。
{
return (a + b + ((a - b >> 31) ^ (a - b)) - (a - b >> 31)) >> 1;
}
这行不?
java里面不能将boolean类型转换为int型的。
int MAX=unsigned(c)>>(sizeof(int)*8-1);
这题很经典。。
还有一种方法:int MAX=((a+b)+abs(a-b))/2;
+ (((x-y)^(y-x)^0x80000000)>>31)*-x;
不准用java 写个servlet
Arrays.sort(a);
return a[1];
{
int ret[2] = {a, b};
return ret[a < b];
}
boolean是不会转成int的