计算机计算乘除法的原理
创作时间:
作者:
@小白创作中心
计算机计算乘除法的原理
引用
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题测试
热门推荐
探秘锂离子电池注液工序关键控制点
什么是插花地?其形成原因及影响分析
键盘乱码大救星,一键解锁恢复秘籍!
食物中毒会发烧吗
食物中毒会发烧吗?一文读懂食物中毒与发热的关系
麻将的玩法及技巧
CPU风扇转速怎么调节?调整CPU风扇转速的3种方法详解
如何合理储存食品,防止食品变质?深度解析与实用技巧
刘禹锡秋词如何治愈你的心灵?
搬家入住新房有什么讲究?这些传统智慧不可不知
五大联赛冲刺阶段:南安普顿提前降级,英超保级形势严峻
皇帝成长计划2兵部玩法揭秘,如何高效组建无敌军团?
散文诗词:融合诗意与散文之美的文学艺术
解密代数学发展史:从古文明到现代科技,背后的智慧超乎想象
如何拍摄太阳:最佳时机、技巧、设备选择与后期处理指南
赤壁之战中的周瑜:四点战前分析与精妙战术布局
将 GitHub 仓库同步到个人服务器
如何实现个人与团队的完美匹配?
深陷“信息茧房”,该如何破茧?
债券如何信用评级
力量训练,减缓腰围增长
茶艺师在茶叶销售中的作用与价值
猫咪打疫苗反应及护理指南
猫咪打疫苗反应及护理指南
心理知识小科普 | 平静的力量
无机物如何转化成生命?科学家人工合成细胞,终于揭开生命的起源和本质
白光双缝干涉实验中的色光分布规律
美国高中放假时间安排详解
团队会议组织指南:从目标设定到结果跟进的七大步骤
走进六盘山实验室探秘“宁夏智造”