我是靠谱客的博主 热情皮皮虾,最近开发中收集的这篇文章主要介绍两数相除求商,不能用乘法,除法,取模运算,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题描述:求商,不能用乘法,除法,取模运算。

算法思路:不能用除法,那只能用减法,但是用减法,超时。可以用位移运算,每次除数左移,相当于2倍。

 1 public class DividTwoIntegers {
2
public int divide(int dividend, int divisor)
3
{
4
if(divisor == 0) return Integer.MAX_VALUE;
5
if(divisor == -1 && dividend == Integer.MIN_VALUE) return Integer.MAX_VALUE;
6
7
long pDividend = Math.abs((long)dividend);//取绝对值,放溢出转化为long
8
long pDivisor = Math.abs((long)divisor);
9
10
int result = 0;
11
while(pDividend >= pDivisor)
12
{
13
int count = 0;//记录位移
14
while(pDividend >= (pDivisor << count))
15
{
16
count ++;
17
}
18
result += (1 << (count-1));
19
pDividend -= (pDivisor << (count-1));
20
}
21
if((dividend <0 && divisor < 0) || (dividend > 0 && divisor > 0))
22
{
23
return result;
24
}
25
else
26
{
27
return -result;
28
}
29
}
30
public static void main(String[] args)
31
{
32
DividTwoIntegers dt = new DividTwoIntegers();
33
int a = dt.divide(10, 3);
34
System.out.println(a);
35
}
36 }

 


最后

以上就是热情皮皮虾为你收集整理的两数相除求商,不能用乘法,除法,取模运算的全部内容,希望文章能够帮你解决两数相除求商,不能用乘法,除法,取模运算所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部