浮点数的二进制存储方式

网上很多浮点数的二进制存储方式的解释都过于复杂,这里用几个简单的例子展示下基本概念,便于理解。

32位浮点数:1为正负标志(0正1负),2-9为次方n,10-32为小数部分的二进制(设值为x)(小数部分二进制运算次方从-1开始,例 101100000.....=2^(-1)+2^(-3)+2^(-4)=0.5+0.125+0.0625=0.6875)。

浮点数的值 = 2^(n-127) * (1+x) ,即所有浮点数的值等于一点几的小数乘以二的一定次方【1.x * 2^(-127 ~ 128)】,所以很多整数用浮点数表示时与原整数有一定差值,即0的值为1*2^(-127) 只是约等于0。
用几个简单的小数演示:
例1:  0.75=2^(-1) * (1+0.5),次方为-1,小数为0.5 ,即n-127需要等于-1计算得n=126二进制为01111110,小数部分为2的-1次方二进制为100000.....  
      0.75=0  01111110  10000000000000000000000
      0011 1111 0100 0000 0000 0000 0000 0000
      十六进制表示为0x3F400000,绝大多数linux采用小端,在小端机器中储存为00 00 40 3F。
      
例2: 4.5=2^(2) * (1+0.125),次方为2,小数为0.125,即n-127需要等于2计算得n=129二进制为10000001,小数部分为2的-3次方二进制为001000.....
      4.5=0  10000001  00100000000000000000000
      0100 0000 1001 0000 0000 0000 0000 0000
      十六进制表示为0x40900000,小端机器储存为00 00 90 40。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值