Skip to content

mapan1984/FloatBits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IEEE 浮点表示

float example

V = (-1)^s x M x 2^E
  • 符号(sign): s 决定这数是负数(s=1)还是正数(s=0),而对于数值 0 的符号位解释作为特殊情况处理
  • 阶码(exponent): E 的作用是对浮点数加权,这个权重是 2E 次幂(可能是负数)
  • 尾数(fraction): M 是一个二进制小数,它的范围是 1 ~ 2-ε,或者是 0 ~ 1-ε

尾数部分可以视为定点小数,阶码为尾数加权,即用 尾数 x 2 ^ E,实际的作用是移动尾数(定点小数)中小数点的位置,加权为正数时向右移动小数点,加权为负数时向左移动小数点,因此这种表示方法被称为浮点数。

例如:十进制的 10.0,定点二进制表示是 1010.0,相当于 1.0100 × 2^3。那么,按照上面 V 的格式,可以得出 s=0M=1.01E=3

计算

k 为 exponent 的位数(float 8 位,double 11 位) n 位 fraction 的位数(float 23 位,double 52 位)

  1. exponent 全为 1
    1. fraction 全为 0
      1. sign == 1:-Infinity
      2. sign == 0:+Infinity
    2. fraction 不全为 0:NaN
  2. exponent 全为 0(非规格化)
    1. 符号 (-1)^sign (0 为正数,1 为负数)
    2. 阶码 1 - (2^(k - 1) - 1) (对于 float: 1 - (2^7 - 1) = -126)
    3. 尾数 0.5 0.25, 0.125, 0.0625(对于 float:最小 2^-23,最大 1 - 2^-23
    4. 结果 (-1)^sign x 2^-126 x 尾数
  3. 规格化
    1. 符号 (-1)^sign (0 为正数,1 为负数)
    2. 阶码 (对于 float: (-127, 128)-127 全为 0,128 全为 1)
    3. 尾数 0.5 0.25, 0.125, 0.0625(对于 float:最小 2^-23,最大 1 - 2^-23
    4. 结果 (-1)^sign x 阶码 x (1 + 尾数)

About

IEEE 浮点表示

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors