原码除法算法原理

计算机乘法除法原理(原码)

乘法:被分解为左移累加。除法:被分解为右移累减去,减法可以转换为加法。浮点数的运算:浮点数是原码表是法,S符号位,F阶码 + 127, M尾数舍弃前面的1(如果F<=-127则小数最前是0也要舍弃,后面补上0,F会变为-126)。

F阶码用的表示法是偏移码(无符号整型表示,并不是书本说的移码,阶码加减运算的时候,应该用了寄存器处理,不是移码运算,因为位数都不够)。

浮点数加减:阶码对齐; 尾数加减,处理溢出,规格化即可。

浮点数乘除:五符号阶码偏移码加减运算,应该是转换为真值后,进行了有符号补码的运算,得到结果,而不是进行了移码的运算(因为移码运算得不到正确的结果);尾数进行整数乘除,得到结果处理溢出,规格化即可。

计算机乘法除法原理(原码)

标签:

分类:

1.乘法

由于计算机中,所有数值都是⽤2的N次⽅来表⽰的:2^n0+2^n1+2^n2+2^n3+2^n4.....

因此x*y,(x)*(2^n0+2^n1+2^n2+2^n3+2^n4)=(x*2^n0)+(x*2^n1)+(x*2^n2)+(x*2^n3)+(x*2^n4)+......即(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+......

⽤15(x)*13(y)来举例,15*13 为1111*1101

a.⾸先y的最低位为1(2^0),x左移0位得到1111

b.然后y的最低第⼆位为0,没有2^1存在,因此本次⽆运算(结果可以看作为0)

c.然后y的最低第三位为1(2^2),x左移2位得到111100

d.然后y的最低第四位为1(2^3),x左移3位得到1111000

e.把a、b、c、d的结果相加1111+0+111100+1111000=11000011(195),该结果就是乘法的结果

特别的,x*y中,如果y是2的N次⽅,因此相当于x右移N位。

2.除法(加减交替法)

x/y其实就是,x不断减y的过程。⼩学时候学的长长除法就是这个原理。

⽤⼆进制的除法x/y,⽐⼗进制容易写,商不是0即是1,⽽且如果除数⼤于除数的1倍,商就是标记在另⼀个位上⾯了

⼆进制除法x/y=0.1001/0.1011⼿⼯计算如下

0.11

_______

0.1001/0.1001

10010(后⾯补0)

-1011

------

111(余数)

1110(后⾯补0)

-1011

--------

1(余数)

设ri表⽰第i次运算后所得的余数,则:

若ri>0,则商1,余数和商左移1位,再减去除数,即ri+1=2ri-y

若ri<0,则商0,余数和商左移1位,再加上除数,即ri+1=2ri+y

⽤85/6来举例,85/6=1010101/110

a.101(0101)左移1位到第3位都⼩于110,因此商=000

b.1010(101)左移四位是1010,⽐110⼤,商=0001,余数=1010-110=100(101)

c.余数100(101)左移⼀位是1001,⽐110⼤,商=00011,余数=1001-110=11(01)

d.余数11(01)左移⼀位是110,等于110,商=000111,余数=0(1)

e.余数0(1)左移⼀位是01,⼩于110,商=0001110,余数=01

因此85/6=1010101/110=0001110,即14,余数为最后的

乘法:被分解为左移累加。

除法:被分解为右移累减去,减法可以转换为加法。浮点数的运算:S x 2(^F) x M浮点数是原码表⽰法,S符号位,F阶码 + 127, M尾数舍弃前⾯的1(如果F<=-127则⼩数最前是0也要舍弃,后⾯补上0,F会变为-126)。

F阶码⽤的表⽰法是偏移码(⽆符号整型表⽰,并不是书本说的移码,阶码加减运算的时候,应该⽤了寄存器处理,不是移码运算,因为位数都不够)。
浮点数加减:阶码对齐; 尾数加减,处理溢出,规格化即可。浮点数乘除:⽆符号阶码偏移码加减运算,应该是转换为真值后,进⾏了有符号补码的运算,得到结果,⽽不是进⾏了移码的运算(因为移码运算得不到正确的结果);尾数进⾏整数乘除,得到结果处理溢出,规格化即可。

计算机乘法除法原理(原码)

1.乘法
由于计算机中,所有数值都是⽤2的N次⽅来表⽰的:2^n0+2^n1+2^n2+2^n3+2^n4.....因此x*y,(x)*(2^n0+2^n1+2^n2+2^n3+2^n4)=(x*2^n0)+(x*2^n1)+(x*2^n2)+(x*2^n3)+(x*2^n4)+......即(x左移n0)+(x左移n1)+(x左移n2)+(x左移n3)+(x左移n4)+......⽤15(x)*13(y)来举例,15*13 为1111*1101a.⾸先y的最低位为1(2^0),x左移0位得到1111

b.然后y的最低第⼆位为0,没有2^1存在,因此本次⽆运算(结果可以看作为0)

c.然后y的最低第三位为1(2^2),x左移2位得到111100
d.然后y的最低第四位为1(2^3),x左移3位得到1111000e.把a、b、c、d的结果相加1111+0+111100+1111000=11000011(195),该结果就是乘法的结果特别的,x*y中,如果y是2的N次⽅,因此相当于x右移N位。

2.除法(加减交替法)x/y其实就是,x不断减y的过程。⼩学时候学的长长除法就是这个原理。⽤⼆进制的除法x/y,⽐⼗进制容易写,商不是0即是1,⽽且如果除数⼤于除数的1倍,商就是标记在另⼀个位上⾯了
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值