linux 取值范围,如何计算float的取值范围(32位机)

在32位机上,float占4个字节。

signal     exponent     fraction

0           00000000     00000000 00000000 0000000

signal : 正负 1位

exponent : 指数 8位

fraction : 小数  23 位

1 01111100 01000000 00000000 0000000

- 1.012X 2(011111002- 011111112)    == -1.01 X 2-3  == -(2-3 + 2-5)  == -(1/8 + 1/32) == -0.15625

16进制写法:

float f = -0x1.400000p-3f;           //.400000 是为了完整的表示 小数部分的23位,后面的0可以省略

负无穷: 1 11111111 00000000 00000000 0000000

负零   : 1 00000000 00000000 00000000 0000000

正零   : 0 00000000 00000000 00000000 0000000

正无穷: 0 11111111 00000000 00000000 0000000

NaN    : * 11111111 (23位小数部分不全为0)

负最小值: 1 11111110 11111111 11111111 1111111     // -0x1.fffffep127f  = -3.4 X 1038  约等于 - 2128

bed8ca1efb8e51fdad0de5ebba5ff518.png

负最大值: 1 00000001 11111111 11111111 1111111     // -0x1.0p-126f   -1.18 X 10-38

9f62d017ea3b039f49024949b8d1caa8.png 

正最小值: 0 00000001 00000000 00000000 0000000     // 0x1.0p-126f   1.18 X 10-38

0b41c92eb9c54d651cc96136b3936056.png

正最大值: 0 11111110 11111111 11111111 1111111     // 0x1.fffffep127f   3.4 X 1038 约等于 2128

698a88a4610f0238bf881a8aa7d9ce46.png

32位机上float的取值范围是:

负无穷; -2128 ~ -2-126; -0; +0; 2-126< 2128; 正无穷;

或者:

负无穷; -3.4*1038 ~ -1.18*10-38; -0; +0; 1.18*10-38 ~ 3.4*1038; 正无穷;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值