完成整数除法运算
来源:互联网 发布:sqoop 更新数据 编辑:程序博客网 时间:2024/05/22 06:46
题目原型:
Divide two integers without using multiplication, division and mod operator.
思路一:
采用最普通的方式,累减法。
注意:为防止溢出,我们另外设置两个变量存储被除数和除数。
public int divide(int dividend, int divisor) {//处理符号if(dividend==0)return 0;int sign = 1;if(dividend<0)sign = sign * (-1);if(divisor<0)sign = sign * (-1);long dividendtemp = Math.abs(dividend);long divisortemp = Math.abs(divisor);if(divisortemp==1)return (int)(sign*dividendtemp);int result = 0;long sum = divisortemp;if(dividendtemp>=divisortemp){while(sum<dividendtemp){result++;sum+=divisortemp;}}return sign*result;}
思路二:
基于思路一过于“笨”,当处理被除数很大而除数很小时反应很慢,下面改进一下,即采用移位运算:
public int divide(int dividend, int divisor){//处理符号if(dividend==0)return 0;int sign = 1;if(dividend<0)sign = sign * (-1);if(divisor<0)sign = sign * (-1);//防止溢出long dividendtemp = Math.abs((long)dividend);long divisortemp = Math.abs((long)divisor);if(divisortemp==1)return (int)(sign*dividendtemp);int result = 0;int threshold = 0;while((divisortemp<<threshold)<=dividendtemp){threshold++;}threshold--;for(int i = threshold;i>=0;i--){if((divisortemp<<i)<=dividendtemp){result+=(1<<i);dividendtemp-=(divisortemp<<i);}}return sign*result;}
0 0
- 完成整数除法运算
- verilog 实现无符号整数除法运算
- 【深入理解计算机系统】【整数除法运算】
- 整数除法
- 整数除法
- 用移位和加减运算实现无符号整数除法
- 求一个整数的位数--除法运算符的应用
- 如何判断除法运算结果是否为整数
- C语言基础 两个整数做除法运算
- 不用乘法、除法及取模运算,构造两个整数的除法
- 除法运算
- 除法运算
- 模运算符% 运算结果是整数除法的余数
- 使用与或运算完成两个整数的相加
- 有三个整数,获取最大值,通过三元运算符完成。
- 高精度整数除法
- 高精度整数除法
- 大整数除法
- kafka Failed to send messages after 3 tries 问题解决
- DatePicker与TimePicker
- myeclipse中java文件头注释格式设置
- 基于海量数据的关联规则挖掘(四)
- 基于海量数据的关联规则挖掘(五)
- 完成整数除法运算
- 基于海量数据的关联规则挖掘(六)
- HDU 1081(经典动归,求最大子矩阵)
- js控制台/console输出/打印图片
- 支付宝推AA支付功能
- 基于海量数据的关联规则挖掘(七)
- 基于海量数据的关联规则挖掘(八)
- 2013年家居7大关键字
- 基于海量数据的关联规则挖掘(九)