第2章 数据的表示和运算
主要内容:
(一) 数据信息的表示
  1.   数据的表示
  2.   真值和机器数
(二) 定点数的表示和运算
1.   定点数的表示 :无符号数的表示;有符号数的表示。
2.   定点数的运算 :定点数的位移运算;原码定点数的加/减运算;补码定点数的加/减运算;定点数的乘/除运算;溢出概念和判别方法。
(三) 浮点数的表示和运算
1.   浮点数的表示 :浮点数的表示范围;IEEE754 标准
2.   浮点数的加/减运算
(四) 算术逻辑单元 ALU
1.   串行加法器和并行加法器
2.   算术逻辑单元 ALU 的功能和机构
2.3 浮点数的表示和运算
2.3.1 浮点数的表示
(1)浮点数的表示范围
浮点数是指小数点位置可浮动的数据,通常以下式表示:
        N=M·RE
  其中,N为浮点数,M为尾数,E为阶码,R称为“阶的基数(底)”,而且R为一常数,一般为2、8或16。在一台计算机中,所有数据的R都是相同的,于是不需要在每个数据中表示出来。
浮点数的机内表示
浮点数真值:N=M × 2E
浮点数的一般机器格式:
数符  阶符    阶码值          .    尾数值
Ms
EJ
En-1……E0
M-1……M-m
1位  1位        n位              m位
Ms是尾数的符号位,设置在最高位上。
E为阶码,有n+1位,一般为整数,其中有一位符号位EJ,设置在E的最高位上,用来表示正阶或负阶。
M为尾数,有m位,为一个定点小数。Ms=0,表示正号,Ms=1,表示负。
为了保证数据精度,尾数通常用规格化形式表示:当R=2,且尾数值不为0时,其绝对值大于或等于0.5。对非规格化浮点数,通过将尾数左移或右移,并修改阶码值使之满足规格化要
求。
浮点数的机内表示
阶码通常为定点整数,补码或移码表示。其位数决定数值范围。阶符表示数的大小。
尾数通常为定点小数,原码或补码表示。其位数决定数的精度。数符表示数的正负。
浮点数的规格化
字长固定的情况下提高表示精度的措施:
增加尾数位数(但数值范围减小)
采用浮点规格化形式
尾数规格化:1/2≤ M <1  最高有效位绝对值为1
浮点数规格化方法:调整阶码使尾数满足下列关系:
尾数为原码表示时,无论正负应满足1/2 ≤ M  <1
        即:小数点后的第一位数一定要为1。
          正数的尾数应为0.1x….x
          负数的尾数应为1.1x….x
尾数用补码表示时,小数最高位应与数符符号位相反。
        正数应满足 1/2 ≤M<1,即 0.1x….x
        负数应满足 -1/2 >M≥ -1,即 1.0x….x         
浮点数的溢出判断——根据规格化后的阶码判断
上溢——浮点数阶码大于机器最大阶码—中断
下溢——浮点数阶码小于机器最小阶码—零处理。
(2)IEEE754标准
根据IEEE 754国际标准,常用的浮点数有两种格式:
单精度浮点数(32位),阶码8位,尾数24位(内含1位符号位)。
双精度浮点数(64位),阶码11位,尾数53位(内含1位符号位)。
由于IEEE754标准约定在小数点左部有一位隐含位,从而实际使得尾数的有效值变为1.M 。例如,最小为x1.0…0,最大为x1.1…1。规格化表示,故小数点左边的位恒为1,可省去。 
阶码部分采用移码表示,移码值127,1~254 经移码为-126 ~ +127。
格式: (-1)S ×2E×(M0.M-1……M-(P-1))小数的原码
最高是数符S,占1位,0表示正、1表示负。
指数项E,基数是2,是一个带有一定偏移量的无符号整数。
尾数部分M,是一个带有一位整数位的二进制小数真值形式(原码)。其规格化形式应调整阶码使其尾数整数位M0为1且与小数点一起隐含掉。
单精度浮点数最大表示范围: (-(1)2×2+127 ~(1)2×2+127)——±1038 
接近于0的最小值:单精度浮点数可以表示((01)2×2-126) —— 10-38的数据而不损失精度。
微机中浮点数的三种表示形式
单精度
      31  30      23  22                                0
符号位
1.
阶      码
尾数有效位
双精度
      63  62      52  51                                0
符号位
1.
阶      码
尾数有效位
扩展精度
      79  78      64  63                                0
符号位
1.
阶      码
尾数有效位
2.3.2 浮点数的加/减运算
    两数首先均为规格化数,进行规格化浮点数的加减运算需经过5步完成:
(1)对阶操作:小阶向大阶对齐,使阶码相等。
(2)尾数运算:阶码对齐后直接对尾数运算。
(3)结果规格化:对运算结果进行规格化处理(使补码尾数的最高位和尾数符号相反)。如溢出则需右规;如不是规格化时应左规。
(4)舍入操作:丢失位进行0舍1入或恒置1处理。
(5)判断溢出:判断阶码是否溢出,下溢则将运算结果置0(机器0),上溢则中断。
对阶运算(小阶向大阶对齐)
      尾数为原码时,尾数右移,符号位不动,最高位补0
      尾数为补码时,尾数右移,符号也移位,最高位补符号位。
(1) 求阶差
ΔE = Ex – Ey =
Ex+1
Ey+1
Ex=Ey          已对齐
Ex Ey   
ExEy
y x 看齐
x y 看齐
My   1,
Mx  1,
= 0
0
0