计算机组成原理之定点运算

计算机组成原理之定点运算

须知:

l 正数的补码为其原值,负数的补码为其每位取反最末位加1

l 二进制两位数相加最大为1,即0+0=0,0+1=1,1+1=10(10不是十而是一零);则:

      01
+     01
————————
      10

一.加减法运算

1.补码加减法运算

加法:

[x]补+[y]补=[x+y]补 (mod 2^(n+1))(即仅保留[x+y]补的n+1位有效位:1位符号,n位数字)

如:

例【1】 x=+1001,y=+0101,求x+y
解:
[x]补=01001,[y]补=00101

      [x]补       01001
+     [y]补       00101
————————————————————————
     [x+y]补      01110

则x+y=+1110(01110第一位0是符号位正,其余4位是真正的二进制值)

例【2】 x=+1011,y=-0101,求x+y
解:
[x]补=01011,[y]补=11011
在这里插入图片描述
则x+y=+0110(x和y都为4位数,100110为6位数,多出一位则舍弃多出的高位1)

例【3】 x=0.1011,y=-0.0101,求x+y
解:
[x]补=0.1011,[y]补=1.1011
在这里插入图片描述
则x+y=0.0110

减法:

[x]补-[y]补=[x]补+[-y]补

[-y]补=([y]补包括符号位求反且最末位加1)

其余如加法

二.溢出判断

将符号位扩为相同的两位。如原数为+1011,原补码应为01011,现补码为001011.若两个这样的数相加减后两个符号位仍相同(即符号位为11或00),则无溢出,否则溢出(即符号位为10或01)

例【4】x=+1100,y=+1000,求x+y
解:
[x]补=001100,[y]补=001000
在这里插入图片描述
结果符号位为“01”,溢出。

三.定点乘法

1.原码乘法(即原码阵列乘法器)

符号位单独计算:x符号位⊕y符号位(⊕两边的值相同为0,不同为1.即1⊕0=1,1⊕1=0),数值位相乘

例【5】 设x=+15,y=-13,用带求补器的原码阵列乘法器求出乘积x * y

设最高位为符号位,则[x]原=01111,[y]原=11101

则最终结果的符号位为0⊕1=1

因符号位单独运算,则进行相乘的数值为|x|=1111,|y|=1101
在这里插入图片描述

乘法的结果加上符号位1得[x*y]原=11100011

转十进制值为-195

2.补码乘法(即补码阵列乘法器)

符号位单独计算:x符号位⊕y符号位,数值位先求补码,再进行原码相乘

例【6】 设x=-15,y=-13,用带求补器的补码阵列乘法器求出乘积x * y

设最高位为符号位,则

[x]补=10001,[y]补=10011

则最终结果的符号位为1⊕1=0

因符号位单独运算,则进行相乘的数值为|x|=1111,|y|=1101
在这里插入图片描述

乘法的结果加上符号位0得[x*y]原=01100011

转十进制值为+195

四.定点除法

1.不恢复余数法

x÷y形式的除法运算转化为[x]补 ± [y]补Y ± [y]补Y+1±……[y]补N形式的加减法运算,因为-[y]补=[-y]补,则可以转化为:[x]补 +
[y]补(或[-y]补)Y+[y]补(或[-y]补)Y+1+……[y]补(或[-y]补)N 形式的加法运算。

Y,Y+1……N为[y]补或[-y]补的位数,随累加的次数而逐渐加1至和x相同位数停止。而具体是加[y]补还是[-y]补,取决于前面累加的结果的符号是否和x一致,一致则这次加[-y]补,不一致则加[y]补。

例【7】 x=0.101001,y=0.111,求x÷y

[x]补=0.101001,[y]补=0.111,[-y]补=1.001
在这里插入图片描述

则商取由上自下每次加减后的q = q4.q3 q2 q1 = 0.101

余数为累加后的结果r= 0.000110

2.恢复余数法

同样以例【7】为例,观察两种方法的不同

例【7】 x=0.101001,y=0.111,求x÷y

在这里插入图片描述
则x÷y商为0.101,余数r=0.000110

发布了13 篇原创文章 · 获赞 14 · 访问量 2481

猜你喜欢

转载自blog.csdn.net/weixin_44929171/article/details/102717165