计算两个整数相除,不能用除法和取余
2017-11-13 09:43
239 查看
class Solution { public int divide(int dividend, int divisor) { int result=0; if(divisor == 0) //除数为0,返回最大值 return Integer.MAX_VALUE; if(dividend == Integer.MIN_VALUE && divisor == -1){ return Integer.MAX_VALUE; } long dividend1 = Math.abs((long)dividend); long divisor1 = Math.abs((long)divisor); while(dividend1 >= divisor1)//当被除数大于除数时,进行位移操作 { int shiftnum = 0; while(dividend1 >= divisor1<<shiftnum){ shiftnum++;//记录左移次数(比实际次数多1) } result += 1<<(shiftnum-1); dividend1 -= divisor1<<(shiftnum-1);//更新被除数的值 } if((dividend>0 && divisor>0)||(dividend<0 && divisor<0))//计算正负数 return result; else return -result; } }
相关文章推荐
- JavaSE7基础 除法 两个int类型变量相除 得到结果(整数与小数)
- 两个长数字(非负数,大整数)相除,计算只取整数位,小数位舍去。
- [LeetCode-29] Divide Two Integers(两个整数相除,不能使用乘除取余算术符)
- 一个google的面试题 计算两个整数相除
- leetcode371 Sum Of Integers 不用加法计算两个整数的和
- 求两个大整数相乘的结果 不能使用BigInteger和long
- JAVA--封装一类Java对象,计算两个大整数(如123456789123456789123456789和987654321987654321987654321)
- 计算两个整数相加之和
- LintCode:两个整数相除
- java 两个整数相除保留两位小数
- 输入两个整数,求他们相除的余数
- 输入两个整数m和n,计算m需要改变多少位才能得到n
- 欧拉计划:纠结的第23题,找出所有不能表示为两个过剩数之和的正整数之和,优化后7s可以执行完,再优化5秒
- Java 两个整数相除保留两位小数,将小数转化为百分数
- 第一周作业1——编写计算“两个整数的最大公约数”程序
- 编写计算“两个整数的最大公约数”程序
- 编写计算“两个整数的最大公约数”程序
- 【11】不能使用四则运算求两个整数的和
- 徐登沿的第九个程序(计算并输出两个整数的最大值)
- 编写计算“两个整数的最大公约数”程序