博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
29. Divide Two Integers
阅读量:4597 次
发布时间:2019-06-09

本文共 1124 字,大约阅读时间需要 3 分钟。

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

两个数相除,不使用乘法,除法,求模计算两个数的除法~

除法运算:被除数中包含有多少个除数的计算
 
由于是int类型的除法,因此结果可能超过int的最大值,当超过int的最大值时输出int的最大值
 
计算商:
1、判断除法运算后的结果正负。
2、将被除数和除数都变为正数,便于计算计算
3、当被除数小于除数时,返回0
  否则,进入循环体;
4、循环体是:判断被除数包含多少个除数(用到了移位的方法,所以这里的个数是2的整数倍)
 

 

class Solution {public:    int divide(int dividend, int divisor) {        if (!divisor || (dividend == INT_MIN && divisor == -1))            return INT_MAX;        int sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1; //表示符号        long long dvd = labs(dividend);  //labs求绝对值的(和abs函数一样,只是abs针对int类型的,而labs针对long类型的)        long long dvs = labs(divisor);        int res = 0; //商        while (dvd >= dvs) {             long long temp = dvs, multiple = 1;            while (dvd >= (temp << 1)) {  //循环条件为temp左移一位(相当于乘上2)之后小于被除数                temp <<= 1;    //temp左移一位                multiple <<= 1;   //multiple左移一位(除数左移,商也左移)            }            dvd -= temp;              res += multiple;        }        return sign == 1 ? res : -res;     }};

 

转载于:https://www.cnblogs.com/hozhangel/p/7835307.html

你可能感兴趣的文章
java生成Https证书,及证书导入的步骤和过程
查看>>
iOS开发系列--音频播放、录音、视频播放、拍照、视频录制
查看>>
LeetCode 661. Image Smoother
查看>>
(译文)MVC通用仓储类
查看>>
《操作系统》第5章:输入/输出(I/O)管理
查看>>
Python初探第一篇-变量与基本数据类型
查看>>
快速创建SpringBoot2.x应用之工具类自动创建web应用、SpringBoot2.x的依赖默认Maven版本...
查看>>
《剑指offer》字符串中的字符替换
查看>>
PHP学习笔记(11)初探PHPcms模块开发
查看>>
【剑指Offer】44、反转单词序列
查看>>
毕业设计《项目管理》总结01
查看>>
substr 方法
查看>>
Switch to strategy
查看>>
Part3_lesson1---ARM汇编编程概述
查看>>
delphi存储图片路径 转载
查看>>
OC基础(3)
查看>>
【学习笔记】ajax处理XML文件方法
查看>>
dhl:页面无刷新ajax上传文件--模拟iframe,超简单
查看>>
用python代码模拟键盘输入
查看>>
Python 字符编码与转码
查看>>