在IEEE-754浮点格式中, exponent = 0 is a denormal, where the implied leading bit in the mantissa is 0 .
维基百科有一篇关于single-precision float (binary32)格式的详细文章,有很多例子 . 对于binary32 float,公式是(来自wiki文章):
(−1)^signbit × 2^(−126) × 0.significandbits ; denormal, expbits=0
(−1)^signbit × 2^(expbits−127) × 1.significandbits ; normal
Inf or NaN (depending on mantissa aka significant); expbits = all 1s
(注意,0.0是非正规的特殊情况,但实际上并不被认为是非正规) .
无论如何,如果指数为零,请注意指数不再是 expbits - bias ,它高一个 .
回到你的情况:你的尾数是0.101二进制,0.625十进制(我将 0b101 / 8 插入 calc ) .
2 ^ -2 * 0.101 (二进制)= 2 ^ -2 * 0.625(十进制)= 0.15625 = 5/32
这是一篇https://en.wikipedia.org/wiki/Minifloat维基百科文章,其中提到了8位IEEE格式,以及计算机图形硬件在现实生活中使用的其他一些不到32位的格式 . (例如24位或16位) . 有趣的事实:x86可以加载/存储16位半精度浮点数的向量,使用F16C ISA extension动态转换为单个寄存器中的单个 .