计算机计算乘除法的原理
创作时间:
作者:
@小白创作中心
计算机计算乘除法的原理
引用
CSDN
1.
https://blog.csdn.net/zdavb/article/details/47108505
计算机在执行乘除法运算时,实际上是在进行加法和移位操作。本文将从基本的二进制运算开始,逐步深入解释计算机如何通过这些基本操作来完成乘法和除法运算。
前言
虽然我们在编程语言中可以直接使用+-/,但是对某些要求不能用/的情况下,我们有必要了解一下计算机是怎样完成乘除法的。
首先,我们要明确一下计算机所能完成的最基本操作是:+(-)和左移右移。虽然ISA中一般都有MUL类指令,但是这些经过译码之后最终的元操作还是加法和移位指令。
乘法实现
我们知道在计算机中只有0和1,于是,就有了二进制计数,比如5 = 101. 抽象的说,任何一个数均可以表示为如下式子:
所以其他数乘以X,就变成了如下式子:
这就是计算机做乘法的原理。因为对于计算机而言,左移一位代表乘以2,右移一位代表除以2。所以,对于a乘以x而言,只是将a左移x为1的位并累加即可。
举例说明:5*3
- 3=0011(不用分解,计算机就是这么存储的)
- 3的第0位1,5左移0位仍为0;
- 3的第一位为1,5左移1位为5*2 = 10
- 然后将其累加,得到最后结果15.
代码如下:
//没有考虑传入数太大,导致溢出的情况。只做简单说明
int getBits(int num){
int numLen = 0;
while(num){
numLen++;
num = num>>1;
}
return numLen;
}
int getIndexBit(int num,int pos){//获取从右到左的第pos位置的值1/0
int index = 1<<pos;
if((num&index)>>pos)
return 1;
else
return 0;
}
int getBit(int num,int pos){//获取从右到左的第pos位置的值1/0
pos = pos-1;
return getIndexBit(num,pos);
}
int multi(int multi1,int multi2){
bool minus = false;
if(multi2<0){
minus = true;
multi2 = -multi2;
}
int length = getBits(multi2);
int index = 0;
int base = multi1;
int sum = 0;
while(index<length){
int val = getBit(multi2,index+1);
if(val)
sum+=(base<<index);
index++;
}
if(minus)
return -sum;
return sum;
}
除法实现
除法实现起来要比乘法难一点,因此,让我们首先从人的角度来计算一下除法的实现。
人类计算除法
当我们在计算51/3=17,抛开9*9乘法表。
- 从被除数的最高位5开始,从0-9选一个数,使得5-i*3>=0且使5-(i+1)*3<0。我们选择了1. 余数为2.
- 将余数10+1=21,继续从0-9中选一个数,使得21-3i>=0且使5-(i+1)*3<0,我们选择了7.
- 由此,我们找到了答案17。
计算机计算除法
计算机计算除法的过程与人类计算的过程很类似,只是选择范围变成了0或1.
还以51/3为例说明(51:110011;3:11)
- 从第一位开始为1,小于11,结果位置0;余数为1
- 从第二位开始,余数*2+1=11,等于11,结果位置1,余数为0;
- 从第三、四位开始,余数*2+0=0<011,结果位置0,余数为0
- 从第5位开始,余数*2+1=1<11,结果置0,余数为1
- 从第6位开始,余数*2+1=11=11,结果置1,余数为0.
此时将结果位相连,恰好是10001(17)
代码请参见:已通过leetcode-29题测试
热门推荐
火柴的历史演变
探秘对话机器人:核心技术、多元应用与未来走向
币圈巨震!比特币突然下挫,跌去近7000美元/枚!发生了什么?
基于离散语音单元的流式解码器语音识别研究
二战班组战术与今天的异同
大型金属雄鹰雕塑:力量与自由的象征
爱情公寓曾小贤:温柔、幽默、机智的都市男性形象
《出发吧麦芬》战力提升攻略:从技能到装备全方位解析
加密聊天软件:为信息安全保驾护航
公布肯尼迪刺杀案档案,特朗普来真的
多动症孩子爱撒谎?家长如何应对
9岁失去双臂,15岁沿街乞讨,23岁用脚创业成总裁,她如今怎样了
春运,青年志愿者温暖旅途每一程!
AGI时代游戏产业的商业模式变革:从技术驱动到生态重构
西湖旅游攻略:杭州最美景点的自然魅力
也先与明英宗:一段承载命运的生死抉择
喝咖啡的注意事项:从量到质的全面指南
发现比巨引源更大的超级引力源!韦布望远镜观测结果再次与理论冲突!
股票的总股本应如何全面了解?这种了解对分析股票有哪些帮助?
机器人动漫中的七大合体方式,你都了解吗?
玻璃生产成本的组成及其对市场价值的影响分析
直航:便于查找的中国-北美班表(含港台,2024年11月及之后)
重温经典丨《大耳朵图图》20年的“变与不变”
非遗|牙雕工艺:刀尖上的宫廷艺术
海南兴隆镇旅游景点推荐表:一日游景点攻略与风景介绍
发生取代反应的条件是什么(你必须知道的7种有机化学反应类型)
逻辑推理的十种方法
质量更新 vs. 功能更新:Windows 更新类型详解
不同类型的玻璃油膜去除剂,哪款更适合你?
链游的未来:区块链与游戏的融合如何改变玩家体验?