发新话题

不用比较运算符得到2个数字的更大值

两个整型数,不准用if 、switch 、?:等判断语句求出两者最大值。
不能使用api
/**
 * 不用比较运算符得到2个数字的更大值。
 * 
 * @author JAVA世纪网(java2000.net, laozizhu.com)
 */
public class Test3 {
  public static void main(String[] args) {
    int[] as = { 44, 55, 44, 4, 40, -44, -55 };
    int[] bs = { 55, 44, 4, 44, 40, -55, -44 };
    for (int i = 0; i < as.length; i++) {
      System.out.println(max2(as[i], bs[i]));
      System.out.println(max3(as[i], bs[i]));
      System.out.println();
    }
  }

  /**
   * 使用移位操作
   * 
   * @param a
   * @param b
   * @return
   */
  public static int max2(int a, int b) {
    int[] nums = { a, b };
    return nums[(a - b) >>> 31];
  }

  /**
   * 使用乘法操作
   * 
   * @param a
   * @param b
   * @return
   */
  public static int max3(int x, int y) {
    return x-(x-y)*((x-y)>>>31);
  }
}
快乐渡过每一天,减肥坚持每一天
编辑 回复 快速回复 TOP
北京跃达创新java培训机构现联手化工大学合力开办专业的JAVA高端培训课程,入学即签就业协议,所有学员100%推荐就业。毕业学员平均年薪4万,最高年薪8万!
本培训部实行小班授课制,人手一机,机房全天12小时开放,每班配备两个指导老师,全天12小时陪读。
课程包括JAVA EE的企业级开发,外包软件流程规范及目前流行的3G课程培训,全部课程周期5个月,实行周一到周五全脱产上课。
现在报名优惠!
培训地点:北京朝阳区北三环东路和平街北口新化信大厦620(化工大学东门)交通便利,地铁5号线、10号线、13号线均可到达。
详情点击 http://www.udare.cn
咨询电话:64212177
QQ:974288453 544098798
编辑 回复 快速回复 TOP
呵呵,有意思。
编辑 回复 快速回复 TOP
牛。。

呵呵 。。以前我怎么没想到?
编辑 回复 快速回复 TOP
厉害。
.不.要.轻.信.你.听.到.的.每.件.事..不.要.花.光.你.的.所.有..不.要.想.睡.多.久.就.睡.多.久.]无.论.何.时.说.“对.不.起”请.看.着.对.方.的.眼.睛。] 永.远.不要.忽.视.别.人.的.梦.想.。]. .永.远.不.要.以.貌.取.人..。慢.慢.地.说,但.要.迅.速.地.想。..总.有.一.种.平.凡.,让.我.们.泪.流.满.面..
编辑 回复 快速回复 TOP
发新话题