Floating point 解释FLT_MAX的位模式

Floating point 解释FLT_MAX的位模式,floating-point,Floating Point,FLT_MAX的位模式为0111110111111111111111111 如果我理解正确,这样的位模式应该表示1.111…1*2^128(小数点后有二十三个1)。然而,FLT_MAX的实际值只是1.0*2^128。这是怎么回事?你的指数错了,它是1.111…1*2^127=2^128-2^104。这相当接近(相对) 2 ^ 128 ,并且您需要用C或C++中的默认精度打印出它的不同(注意,作为浮点< /代码> -如果这是IEEE75 432位浮点 >代码> 2 ^ 128 < /CUL>是无穷

FLT_MAX
的位模式为
0111110111111111111111111


如果我理解正确,这样的位模式应该表示
1.111…1*2^128
(小数点后有二十三个1)。然而,
FLT_MAX
的实际值只是
1.0*2^128
。这是怎么回事?

你的指数错了,它是
1.111…1*2^127=2^128-2^104
。这相当接近(相对)<代码> 2 ^ 128 <代码>,并且您需要用C或C++中的默认精度打印出它的不同(注意,作为<代码>浮点< /代码> -如果这是IEEE75 432位<代码>浮点 >代码> 2 ^ 128 < /CUL>是无穷大,所以您需要一个<代码>双< /代码>)。 位模式产生

  0   11111110  11111111111111111111111
  ^      ^             ^
sign  exponent     mantissa
       254-127     2 - 2^(-23)
打印完整值:

340282346638528859811704183484516925440.0   // FLT_MAX
340282366920938463463374607431768211456.0   // 2^128
您可以在第八位数字处看到差异