浮点表示(计算机系统)

定点表示法:

在这里插入图片描述
符号 ‘.’ 表示为二进制的点,点右边的权是2的负幂,左边是2的正幂。
在这里插入图片描述
小数的二进制只能表示那些能够写成x* 2 y 2^{y} 2y的数,对于那些其他数并不能准确表示,只能近似的表示。
并且不能有效表示非常大的数。(增加二进制表示长度可以增加精度)

IEEE表示:

在这里插入图片描述

  • 符号(sign):S决定这个数是负数(S=1)还是正数(S=0)
  • 尾数(significand):M是一个二进制小数
  • 阶码(exponent):E是对浮点数进行加权,权重为2的E次幂

浮点数的位划分:

  • 一个单独的符号位S直接编码符号
  • k位的阶码字段exp编码阶码E
  • n位的小数字段frac编码尾数M(M是一个二进制小数)

在这里插入图片描述
单精度浮点格式:float(s=1,exp=8,frac=23)32位
双精度浮点格式:double(s=1,exp=11,frac=52)64位
根据exp的值,被编码的值可以分成三种情况:
在这里插入图片描述

  1. 规格化的值:
    exp的位模式既不全为0,也不全为1。
    阶码字段:
    被解释为以偏置形式表示的有符号整数(单精度-126~127)(双精度-1022~1023);阶码的值:E=e-Bias。
    ①e:(是无符号数) e k − 1 e_{k-1} ek1 e 1 e 0 e_1 e_0 e1e0
    ②Bias: 2 k − 1 2^{k-1} 2k1 -1的偏置值
    小数字段:
    尾数定义为M=1+f(隐含的以1开头的表示)

  2. 非规格化的值:
    阶码全0时。
    阶码字段:
    阶码值是E=1-Bias。
    小数字段:
    尾数的值是M=f 。
    ①非规格化数有效的避免了+0.0与-0.0的产生
    ②对于接近0.0的数逐渐溢出,可能的数分布均匀的接近0.0

  3. 特殊的值:
    阶码全1,小数全0,得到的值表示无穷。s=0正无穷,s=1负无穷 。
    阶码全1,小数非0,结果称为“NaN”(不是一个数)。

IEEE表示方式实例一:

假定的8位浮点格式,其中有k=4(阶码位),n=3(小数位),偏置(Bias)为 2 4 − 1 2^{4-1} 241-1=7.

在这里插入图片描述 e = e k − 1 e=e_{k-1} e=ek1 e 1 e 0 e_1 e_0 e1e0(无符号数)
E:

  • 规格化:E=e-Bias
  • 非规格化:E=1-Bias

f = 0. f n − 1 f=0.f_{n-1} f=0.fn1 f 1 f 0 f_1 f_0 f1f0(二进制值)

M:

  • 规格化:M=1+f
  • 非规格化:M=f

V = ( − 1 ) s × M × 2 E V=(-1)^{s}×M×2^E V=(1)s×M×2E

IEEE表示方式实例二:

整数与浮点数之间的转换方式:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44044341/article/details/109248092