《计算机组成原理》浮点表示法

前置知识

有符号整数、有符号小数、补码
定点负小数的原码表示范围:-(1-2-n)到-2-n,其补码表示范围为:-1到-2-n

什么是浮点数

浮点数让小数点的位置根据需要而浮动。它跟定点数不一样,定点数的小数点是固定的,默认在一个位置上。

公式

N = M × r E N= M×r^E N=M×rE
可以将其看成科学计数法来理解,N=M×rE 即 103=1.03×102 。但是在浮点表示法中r一般是2而不是10(表示在二进制下)。
E叫做阶码(Exponent),用来控制小数点的位置。M叫做尾数(Mantissa),是一个纯小数(整数部分为0的小数),表示小数点后的数值。
比如还用回十进制r=10,M=0.4567,E=-4,那么N=0.00004567
这里E的值表示小数点向左移动4位

格式

若阶码和尾数都用补码表示
则获得浮点数的一般格式:
浮点数的一般格式
其中各位都是二进制位,取0或1。
es和ms是符号位。es为1时,表示×2的负数次方,也就是小数点向左移;es为0时,表示×2的正数次方也就是小数点向右移。ms为1时,表示这个数是负数,即N为负数。
例如:
这里若ms=0b0、m为0b1011,则表示十进制的11,因为它表示的是小数点后的数值,所以实际上M=0.11

用k表示阶码的数值位位数,n来表示尾数的数值位位数。

浮点数为典型值

在阶码和尾数都用补码表示的模式下

  1. 当浮点数为最大正数
    要取最大值,阶码部分:小数点需要向右移动(es=0),同时e要尽量大,也就是e的各位全为1。尾数部分:要正数(ms=0),同时尾数也要尽量大,也就是m的各位都取1。
    X 最 大 正 数 = ( 1 − 2 − n ) × 2 2 k − 1 X_{最大正数}= (1-2^{- n})×2^{2^k-1} X=(12n)×22k1
    这时候,我们的阶码E=2k-1,因为e是k个1(二进制),转成十进制数就是2k-1(补充:k位二进制数能取到的最大值就是2k-1),这里表示小数点向右移动2k-1位;
    尾数M=1-2-n,因为m的全部k位都为1(二进制),转成十进制是1/2+1/4+1/8+…+1/2-n=1-2-n
  2. 当浮点数为最小正数
    阶码部分:小数点需要向左移动(es=1),同时e=0(别忘了现在是用补码表示阶码,让符号位为1,e=0,这样阶码部分就表示最小的负数),让小数点疯狂地向左移动。尾数部分:要正数(ms=0),同时m也要尽量小,于是令 m=0b1,m不能为0啊,这是要正数。
    X 最 小 正 数 = 2 − n × 2 − 2 k X_{最小正数}= 2^{- n}×2^{-2^k} X=2n×22k
    此时,我们的阶码E=-2k,因为此时阶码部分表示最小的负数,k+1位的有符号整数所能表示的最小负数,也即绝对值最大的负数就为-2k
    尾数M=2-n,因为m的n位中,只有最后一位,第n位为1,转成十进制是2-n
  3. 当浮点数为最小的数(绝对值最大的负数)
    阶码部分:小数点需要向右移动(es=0),同时e的各位全为1。尾数部分:要负数(ms=1),m=0b0,这样尾数部分就能取到它能取到的最大负数。
    X 最 小 数 = − 1 × 2 2 k − 1 X_{最小数}= -1×2^{2^k-1} X=1×22k1
    阶码E=2k-1,理由同第1点,这是k位2进制数能取到的最大正数。
    尾数M=-1,因为有符号小数所能取到的最大负数为-1。

规格化浮点数

规格化浮点数规定尾数的最高数位必须是一个有效值。
于是若用原码表示,规格化浮点数的尾数M的应在下列范围内:
1 r ≤ M < 1 \frac{1}{r} \le M <1 r1M1

用补码表示规格化浮点数

在尾数用补码表示时,规格化浮点数应满足尾数的最高数位与符号位不同。

就是说尾数M为正数时,需要补码为0.1XXXXX;尾数M为负数时,补码为1.0XXXXXX。

若用补码表示,规格化浮点数应在下列范围内:
1 2 ≤ M < 1 ∪ − 1 ≤ M < − 1 2 \frac{1}{2} \le M <1 \cup -1 \le M <-\frac{1}{2} 21M11M21
在规格化用补码表示:

  • 绝对值最大负数为1.00…00,就是-1;
  • 能取到的绝对值最小负数为1.01…11,是-(2-1+2n),就是比-1/2大一点,取不到-1/2。
  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值