浮点数的编码表示

目录

什么是移码

为什么要用移码来表示指数(阶码)

浮点数表示范围

IEEE754标准

Single Precision(单精度)

示例

1.机器数转换为真值

2.真值转换为机器数


什么是移码

将每一个数值加上一个偏置常数( Excess / bias)。移码是用来表示浮点数的阶。
通常,当编码位数为n时,bias取 或(如 IEEE 754)
例如:当n = 4 时,

为什么要用移码来表示指数(阶码)

便于浮点数加减运算时的对阶操作(比较大小)

浮点数表示范围

第0位数符号位S;第1~8位为8位移码表示阶码E(偏置常数为128);第9~31位为24位二进制原码小数,表示尾数M。规格化尾数的小数点后第一位总是1,故规定第一位默认的“1”不明显表示出来。这样就可以用23个位数表示24位尾数。

 

IEEE754标准

规格化数:

规定:小数点前总是“1”,故可隐含表示。

Single Precision(单精度)

  • Sign bit: 1表示negative;0表示 positive
  • Exponent(阶码)
    • SP规格化阶码范围为0000 0001 (-126) ~ 1111 1110 (127)
    • bias为127(single),1023(double)
  • Significand(部分尾数):
    • 规格化尾数最高位总是1,所以隐含表示,省1位
    • 1 + 23 bits ( single),1 + 52 bits (double)

示例

1.机器数转换为真值

已知float型变量x的机器数为BEE00000H,求x的值是多少?

  • 数符:1(负数)
  • 阶(指数)
    • 阶码: 0111 1101B = 125
    • 阶码的值:

  • 尾数数值部分:
  • 真值:

2.真值转换为机器数

已知float型变量x的值为-12.75,求x的机器数是多少?

因此,符号S=1,阶码E=127+3=128 + 2 = 1000 0010

显式表示的部分尾数 Significant = 100 1100 0000 0000 0000 0000
x 的机器数表示为: 1 1000 0010 100 1100 0000 0000 0000 0000


版权声明:本文为u014555106原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。