不用任何比较判断找出两个数中较大的
2017-11-02 09:42
211 查看
/** * Created by lxw, liwei4939@126.com on 2017/11/2. * 不用任何比较判断找出两个数中较大的 * 给定两个32位整数a和b,返回较大的数 */ public class getMax { //取反操作 public int flip(int n){ return n^1; } //符号函数 public int sign(int n){ return flip((n>>31) & 1); } // a-b的值可能会溢出 public int getMax1(int a, int b){ int c= a - b; int scA =sign(c); int scB = flip(scA); return a * scA + b * scB; } // 不用考虑a-b的值会不会溢出 public int getMax2(int a, int b){ int c= a-b; int sa = sign(a); int sb = sign(b); int sc = sign(c); int difSab = sa ^ sb; int sameSab = flip(difSab); int returnA = difSab * sa + sameSab * sc; int returnB = flip(returnA); return a * returnA + b * returnB; } }
相关文章推荐
- 不用任何比较判断找出两个数中较大的数
- 不用任何比较判断找出两个数中较大的数
- 不用任何比较判断找出两个数中较大的数。
- 两个变量a,b,不用“if”,“? :”,switch或者其它判断语句,找出两个数中间比较大的
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量
- 有两个变量a 和 b,不用if、?: 、switch 或者其他判断语句,找出两个数中比较大的那个
- 有两个变量a 和 b,不用if、?: 、switch 或者其他判断语句,找出两个数中比较大的那个
- 两个变量a,b,不用判断语句,找出两个中比较大的那个变量
- 位运算---不用任何比较判断找出两个数中的最大值
- 有两个变量a和b,不用“if”、“? :”、“switch”或其他判断语句,找出两个数中比较大的
- 【面试题】不用if,条件表达式,switch等判断语句------找出两个数中较大的
- 有两个变量a和b,不用if等判断语句,求两者较大的值
- 不用”if“,”?:“,”switch“或其他判断语句,求两个数中较大的数或较小的数
- 不用任何比较操作判断正整数a和b的大小
- 不用判断语句比较两个数字大小
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- 今天学习时突然联想到这样一个有趣但无用的问题:利用C语言(不能是其他语言)求两个整数的较大/小值-----要求不用if、三目?、switch、循环、数组、加减乘除求余、位运算符以及任何库函数
- 不用判断语句实现两个整数的比较
- 编写函数求两个整数 a 和 b 之间的较大值。要求不能使用if, while, switch, for, ?: 以及任何的比较语句
- 选出两个数中较大者,不用if, ? : ,switch等判断语句.