(计算机组成原理)第二章数据的表示和运算-第三节3:浮点数加减运算

Posted 快乐江湖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(计算机组成原理)第二章数据的表示和运算-第三节3:浮点数加减运算相关的知识,希望对你有一定的参考价值。

一:以十进制下的科学计数法的加减运算为例说明浮点数加减运算

比如有浮点数 9.85211 × 1 0 12 + 9.96007 × 1 0 10 9.85211×10^{12}+9.96007×10^{10} 9.85211×1012+9.96007×1010,其运算基本步骤如下

1:对阶
所谓对阶就是对齐两个浮点数的阶数,由于计算机内部尾数是定点小数,所以对阶是一律向大阶看其
也即 9.85211 × 1 0 12 + 0.0996007 × 1 0 10 9.85211×10^{12}+0.0996007×10^{10} 9.85211×1012+0.0996007×1010

2:尾数相减
也即 9.9517107 × 1 0 12 9.9517107×10^{12} 9.9517107×1012

3:规格化
由于我们已经对阶了,所以这里就不用规格化了。

  • 如果尾加减出现了 0.0099517 × 1 0 12 0.0099517×10^{12} 0.0099517×1012,就需要左规;如果尾数加减出现了 99.517107 × 1 0 12 99.517107×10^{12} 99.517107×1012时,需要右规

4:舍入
假如规定了机器只能保持6位有效尾数, 9.9517107 × 1 0 12 9.9517107×10^{12} 9.9517107×1012中多余尾数部分应该砍掉,也即 9.95171 × 1 0 12 9.95171×10^{12} 9.95171×1012

  • 也可以采用四舍五入,也即 9.95171 × 1 0 12 9.95171×10^{12} 9.95171×1012
  • 也可以采用“若砍掉部分非0,则入1”的原则,即 9.95172 × 1 0 12 9.95172×10^{12} 9.95172×1012

5:判溢出
假如规定了阶码不能超过两位,若运算后的阶码超出范围则溢出。比如 9.85211 × 1 0 99 + 9.96007 × 1 9 99 = 19.81218 × 1 0 99 9.85211×10^{99}+9.96007×19^{99}=19.81218×10^{99} 9.85211×1099+9.96007×1999=19.81218×1099,规格化后并采用四
舍五入原则保留6位尾数得: 1.98122 × 1 0 100 1.98122×10^{100} 1.98122×10100,因此这里产生了溢出

  • 需要注意的是尾数溢出并不是真正的溢出,因为有可能通过规格化来拯救。

二:浮点数的加减运算(不舍入)

c a s e : case: case已知十进制数 X = − 5 256 X=-\\frac{5}{256} X=2565 Y = + 59 1024 Y=+\\frac{59}{1024} Y=+102459,按机器补码浮点运算规则计算 X − Y X-Y XY,结果用二进制表示,浮点数格式如下

  • 阶符2位、阶码2位、数符2位、尾数9位

预备步骤1:格式转换

  • 对于 X = − 5 256 X=-\\frac{5}{256} X=2565:其中分子5= ( 101 ) 2 (101)_{2} (101)2,而 1 256 = 2 − 8 \\frac{1}{256}=2^{-8} 2561=28,因此 X = − 101 × 2 − 8 = − 0.101 × 2 − 5 = − 0.101 × 2 − 101 X=-101× 2^{-8}=-0.101×2^{-5}=-0.101×2^{-101} X=101×28=0.101×25=0.101×2101
  • 对于 Y = + 59 1024 Y=+\\frac{59}{1024} Y=+102459:其中分子 59 = ( 111011 ) 2 59=(111011)_{2} 59=(111011)2,而 1 1024 = 2 − 10 \\frac{1}{1024}=2^{-10} 10241=210,因此 Y = + 111011 × 2 − 10 = + 0.111011 × 2 − 4 = + 0.111011 × 2 − 100 Y=+111011×2^{-10}=+0.111011×2^{-4}=+0.111011×2^{-100} Y=+111011×210=+0.111011×24=+0.111011×2100

预备步骤2:确定浮点数

题目规定:阶符2位、阶码2位、数符2位、尾数9位

①:对于 X X X

  • 阶码:其阶码部分为 − 5 -5 5,对应原码为 1101 1101 1101,对应补码为 1011 1011 1011,因为阶符2位、阶码3位,因此必须增添1位,采用双符号位,也即补码为 11011 11011 11011;
  • 尾数:其尾数部分为 − 0.101 -0.101 0.101,对应原码为 1.101 1.101 1.101,对应补码为 1.011 1.011 1.011,因为数符2位、尾数9位,因此必须增添1位,采用双符号位,也即补码为 11.011 11.011 11.011,再进行符号扩展,也即补码为 11.011000000 11.011000000 11.011000000

因此 X X X的浮点数形式为:11011,11.011000000

②:对于 Y Y Y

  • 阶码:其阶码部分为 − 4 -4 4,对应原码为1100,对应补码为 1100 1100 1100,因为阶符2位、阶码3位,因此必须增添1位,采用双符号位,也即补码为 11100 11100 11100
  • 尾数:其尾数部分为 + 0.111011 +0.111011 +0.111011,对应原码为 0.111011 0.111011 0.111011,对应补码为 0.111011 0.111011 0.111011,因为数符2位、尾数9位,因此必须增添1位,采用双符号位,也即补码为 00.111011 00.111011 00.111011,再进行符号扩展,也即补码为 00.111011000 00.111011000 00.111011000

因此 Y Y Y的浮点数形式为:11100,00.111011000

第一步:对阶使两个数的阶码相等,小阶向大阶看其