什么自己做网站,如何优化关键词排名到首页,济南手机网站定制价格,做球服的网站有哪些题目
输入2个int型整数#xff0c;它们进行除法计算并返回商#xff0c;要求不得使用乘号’*‘、除号’/‘及求余符号’%。当发生溢出时#xff0c;返回最大的整数值。假设除数不为0。例如#xff0c;输入15和2#xff0c;输出15/2的结果#xff0c;即7。
分析
下面以…题目
输入2个int型整数它们进行除法计算并返回商要求不得使用乘号’*‘、除号’/‘及求余符号’%。当发生溢出时返回最大的整数值。假设除数不为0。例如输入15和2输出15/2的结果即7。
分析
下面以15/2为例讨论计算的过程。15大于2也大于2的2倍即4还大于2的4倍即8但小于2的8倍即16。于是先将15减去8还剩余7。由于减去的是除数的4倍减去这部分对应的商是4。接下来对剩余的7和除数2进行比较7大于2大于2的2倍即4但小于2的4倍即8于是将7减去4还剩余3。这一次减去的是除数2的2倍对应的商是2。然后对剩余的3和除数2进行比较3大于2但小于2的2倍即4于是将3减去2还剩余1。这一次减去的是除数的1倍对应的商是1。最后剩余的数字是1比除数小不能再减去除数了。于是15/2的商是421即7。
解
public class Test {public static void main(String[] args) {System.out.println(divide(15, 2));}public static int divide(int dividend, int divisor) {if (dividend 0x80000000 divisor -1) {return Integer.MAX_VALUE;}int negative 2;if (dividend 0) {negative--;dividend -dividend;}if (divisor 0) {negative--;divisor -divisor;}int result divideCore(dividend, divisor);return negative 1 ? -result : result;}private static int divideCore(int dividend, int divisor) {int result 0;while (dividend divisor) {int value divisor;int quotient 1;// 注意value和dividend都是负数while (value 0xc0000000 dividend value value) {quotient quotient;value value;}result quotient;dividend - value;}return result;}
}