面试题:两个整数不使用比较运算符和API得到更大的那个值
2009-08-24 13:02
246 查看
两个整型数,不准用if 、switch 、?:等判断语句求出两者大值,不能使用api
我这里2个实现方法如下:
重点就是那个>>> 的移位操作。
我这里2个实现方法如下:
/** * 不用比较运算符得到2个数字的更大值。 * * @author J***A世纪网(java2000.net) */ 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); } }
重点就是那个>>> 的移位操作。
相关文章推荐
- 面试题:两个整数不使用比较运算符和API得到更大的那个值
- 面试题:两个整数不使用比较运算符和API得到更大的那个值
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API.
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API
- 面试题:两个整型数,不准用if 、switch 、?:等判断语句求出两者大值,不能使用api
- 12_2求两个整数中的较小值,要求不能使用比较运算符, if-else, a>b?a:b, while for
- Java得到一个整数的绝对值,不使用任何判断和比较语句,包括API.
- java中两个整数相除得到小数点并保留两位小数的方法
- 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
- [Java] 不使用第三个变量实现两个整数类型变量互换(异或运算符)
- 另一道看上去很吓人的面试题:如何交换a和b两个整数的值,不用额外空间 (Rev. 2)
- 面试题:不使用中间变量,交换两个数字
- 给定两个整数 l 和 r ,对于所有满足1 ≤ l ≤ x ≤ r ≤ 10^9 的 x ,把 x 的所有约数全部写下来。对于每个写下来的数,只保留最高位的那个数码。求1~9每个数码出现的次数。
- 小易邀请你玩一个数字游戏,小易给你一系列的整数。你们俩使用这些整数玩游戏。每次小易会任意说一个数字出来,然后你需要从这一系列数字中选取一部分出来让它们的和等于小易所说的数字。 例如: 如果{2,1,2,7}是你有的一系列数,小易说的数字是11.你可以得到方案2+2+7 = 11.如果顽皮的小易想坑你,他说的数字是6,那么你没有办法拼凑出和为6 现在小易给你n个数,让你找出无法从n个数中选取部分求和
- 19. 中兴面试题:输入两个整数n和m, 从数列1,2,...,n中任意选择几个数,使其和等于m, 要求编写程序输出所有的组合
- IF 没有 IF (由“不使用IF等条件判断,输出两个数中大的那个”产生的一些随想)
- 不使用判断比较符比较两个整数的大小(位运算)
- JavaSE7基础 除法 两个int类型变量相除 得到结果(整数与小数)