整数除法
题目
给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。
注意:
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2 31, 2 31−1]。本题中,如果除法结果溢出,则返回 2 31 − 1
代码
class Solution {
public int divide(int a, int b) {
int c=1;//判断商的正负
if(a<-2147483647&&b==-1)//这种情况下商会溢出,溢出情况返回2147483647
return 2147483647;
if(a>0){
a=-a;
c=-c;
}
if(b>0){
b=-b;
c=-c;
}
int i = divideCore(a,b);
return c==1? i:-i;
}
private int divideCore(int a,int b){
int middle = b;
int result = 0;
int midresult = 1;
while(a <= b){