浮点数

浮点数#

浮点数是与定点数相对的概念,计算机中的定点数约定小数点的位置不变,即人为约定俗成地规定了小数点的位置。例如定点纯整数约定了小数点在数值位的最后。定点纯小数约定了数值位的最高位在小数点后面。

由于计算机字长的限制,当需要表示的数据有很大的数值范围时,他们不能直接用定点小数或者定点整数表示。

浮点数的形式

浮点数由尾数 M 和阶码 E 构成。基数为 2 的数 F 的浮点数表示为:

F=M2E

尾数 M 必须为小数,用 n+1 位有符号定点小数表示,可采用原码,补码。阶码 E 必须为整数,用 k+1 位有符号定点整数表示,可采用原码,补码,移码。浮点数编码的位数 m=(n+1)+(k+1)

阶符

阶码数值部分

数符

尾数数值部分

1

k

1

n

备注

  • 阶码 是整数,其位数 k+1 决定了浮点数表示的数值范围,也就是决定了数据的大小,或小数点在数据中的真实位置。阶码越长,所能表示的范围越大。

  • 阶符 决定阶码的正负。

  • 尾数 是小数,其位数 n+1 决定了浮点数的精度,如果尾数采用小数且位数 n 足够长,则当浮点数运算需要对尾数运算结果舍入时,造成的数据精度损失会比较小。即尾数越长,所能表示的精度越高。尾数的符号表示浮点数的正负。

非规格化浮点数#

当对尾数 M 只要求是小数而无其他限制时,此时的浮点数被称为 非规格化浮点数。假设阶码和尾数都用补码表示,则非规格化浮点数可表示的范围如下:

阶码和尾数

数值

阶码和尾数

数值

阶码最小值

2k

阶码最大值

2k1

尾数最小负值

1

尾数最大负值

2n

尾数最小正值

+2n

尾数最大正值

+(12n)

以 8 位数值位,一位符号位的阶码为例子:

由于用补码表示,所以阶码的最小值应该为:1 0000000028=256;而阶码的最大值应为:0 11111111281=255