TAG / 计算机基础

The IEEE 754 Floating Point Format

最近碰到用十六进制数表示浮点小数的问题,本科没学好,现在是补习时间。

FP32(单精度浮点数)

  • 第 31 bit 为符号位,0 表示正数,反之为负数,其读数值用 s 表示;
  • 第 30~23 bit 共 8 bits 为指数,其读数值用 e 表示;
  • 第 22~0 bit 共 23 bits 为分数,视为二进制纯小数,假定该小数的十进制值为 f;
 S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF
31 30    23 22                    0

v = (-1)s × 2e-127 × 1.f

十进制浮点小数转 IEEE 754 格式的方法,以 −118.625 为例:

  • 由于是负数,得 s = 1;
  • 去符号后,将小数转为二进制数表示(整数部分除以 2 取整,小数部分乘以 2 取整)得 1110110.101;
  • 将该二进制小数正规化,即将小数点向左(为正)或向右(为负)移动,直至形成 1.f 格式的数,得1.110110101×26,补齐 23 bit 从而得到 f = 11011010100000000000000;移动的位数加 127 即为 e,得 e = 133 = 10000101;
  • 最后得到 IEEE 754 格式:1 10000101 11011010100000000000000 = 0xC2ED4000。

CONTINUE READING »