【CO101】计算机组成原理笔记1 —— 定点数转单精度浮点数(SEM)

笔者:YY同学

生命不息,代码不止。好玩的项目尽在GitHub



定点与浮点

  • 定点(Fixed Point)
    所谓定点就是一个固定小数点位置的表达形式,比如 3.140.618。用这种方法表示的 小数(fractional) 比较直观易懂,但是不利于表示非常大或者非常小的小数。

  • 浮点(Floating Point)
    然而在计算机中,我们表示的小数的范围需要具有一定的灵活性,因此我们采用了科学计数法(SEM,一般是二进制),将小数分成三块分别进行存储。


    在这里插入图片描述


单精度浮点数组成

在这里插入图片描述

单精度一般是 32bits,其中第1位表示 符号(sign), 中间8位表示 指数大小(exponent),最后23位则表示 正规化之后的小数尾数(Mantissa)


转化步骤

在这里插入图片描述

  1. 正规化(Normalize)

先将整数和小数部分分别转化为二进制,整数部分除二取余从右往左排,小数部分乘二取整从左往右排,然后写在一起。

在这里插入图片描述

  1. 移位

将小数点左移至第一位后面,然后乘2的移位次方。
− 1011. 1 2 = − 1.0111 ∗ 2 3 -1011.1_2 = -1.0111 * 2^3 1011.12=1.011123

  1. 分别计算SEM(记得都转成二进制)

S 代表符号,负数为1,正数为0。例子中为负数因此 S = 1
E 代表指数大小 + 偏移量(bias),单精度下 bias = 127。因此 E = 3 + 127 = 130 = 10000010
M 仅代表小数尾数,M = 01110000000000000000000


因此最后的计算结果为SEM的组合:
− 11. 5 10 = 1100000100111000000000000000000 0 2 = 0 x C 1380000 -11.5_{10} = 11000001001110000000000000000000_2 = 0xC1380000 11.510=110000010011100000000000000000002=0xC1380000


表示范围

S 的值仅为 0 或 1
E 最小为 00000001 = 1,最大为 11111110 = 254
M 最小为 00000000000000000000000,最大为 11111111111111111111
量级(Magnitude)范围 1.8 ∗ 1 0 − 38 1.8*10^{-38} 1.81038 ~ 3.4 ∗ 1 0 38 3.4*10^{38} 3.41038
整体范围 − 3.4 ∗ 1 0 38 -3.4*10^{38} 3.41038 ~ − 1.8 ∗ 1 0 − 38 -1.8*10^{-38} 1.81038 1.8 ∗ 1 0 − 38 1.8*10^{-38} 1.81038 ~ 3.4 ∗ 1 0 38 3.4*10^{38} 3.41038

在这里插入图片描述


特殊表示

在这里插入图片描述

  • 全0:0
  • E全为1,M全为0:+∞ / -∞
  • E全为1,M为非0:不是一个数字(NaN)
  • E全为0,M为非0:未被正规化的数字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值