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
您可以在第八位数字处看到差异