两个整型数,不准用if 、switch 、?:等判断语句求出两者最大值。
不能使用api

解决方案 »

  1.   


    return a1 > a2;
      

  2.   


    public static int max(int a[]) {
    return a[((a[0] - a[1]) >> 31) & 1];// 
    }在网上找到了一种,
    别的方法不知道还有没有
      

  3.   

    int x=10;
    int y=8;
    int max=y*((x-y)>>>31)+x*((y-x)>>>31);
      

  4.   


    public static int max(int a, int b) {   
        int[] nums = { a, b };   
        return nums[b / a % 2];   
    }   
    若 a=2;b=4这个方法是不是有点问题
      

  5.   

    int max=x*(1-((x-y)>>>31))+y*((x-y)>>>31);这个没有问题了.
      

  6.   

    这就是刁难人的问题 可惜我就算看了int max=x*(1-((x-y)>>>31))+y*((x-y)>>>31);也不明白为啥可以这么搞。。哎。。 
      

  7.   

    x-y>>>31不是把x-y的符号位取出来了吗?如果x>=y则x-y>>>31就是0,否则是1
      

  8.   

    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
      

  9.   

    挺无聊的,就像吃饭的时候有快子不能用,非让我们用手抓一样,真不爽!附一下二楼的那个 return a1 > a2; 头脑比较简单!
      

  10.   

    >>>是什么来的,麻烦告诉一下
      

  11.   

    arr[]=[a,b]
    return a[(int)(b>a)];
      

  12.   

    学习啦,我只知道return a>b
      

  13.   

    int a,b;
    Math.Max(a,b);
    这个不知道算不算。
      

  14.   

    return i>j?i:j
    用三目运算就可以啦
      

  15.   

    int max=x*(1-((x-y)>>>31))+y*((x-y)>>>31); 
    顶这个!
      

  16.   


    简化为:
    int max=x-(x-y)*(x-y>>>31);
      

  17.   

        三目运算符很实用的,赞一下。
        public class Max_min
       {
          double a ,b,c;
          c = (a > b ? a : b);
          return c ;
       }
       楼上几位的位运算也赞一下吧,达到底层确实很好的。
      

  18.   

    其实三元操作是最快的,因为一般CPU都直接有对应这个操作的机器码。
      

  19.   

    static int Max(int a, int b)
    {
        return (a + b + ((a - b >> 31) ^ (a - b)) - (a - b >> 31)) >> 1;
    }
      

  20.   

      int max=x*(1+((x-y)>>31))+y*((x-y)>>31)*(-1); 
    这行不?
      

  21.   


    java里面不能将boolean类型转换为int型的。
      

  22.   

    int c=a-b;
    int MAX=unsigned(c)>>(sizeof(int)*8-1);
    这题很经典。。
      

  23.   

    int a,b;
    还有一种方法:int MAX=((a+b)+abs(a-b))/2;
      

  24.   

    ((x-y)>>31)*-y + ((y-x)>>31)*-x
             + (((x-y)^(y-x)^0x80000000)>>31)*-x;
      

  25.   

    我也给你们出个问题
    不准用java 写个servlet
      

  26.   

    int []a = {8,3};
    Arrays.sort(a);
    return a[1];
      

  27.   

    这题其实挺无聊的,换个思路做做~int max(int a, int b)
    {
    int ret[2] = {a, b};
    return ret[a < b];
    }
      

  28.   

    楼上的 是用java 不是C++
    boolean是不会转成int的