浮点类型数据的存储格式

  • float型数据通俗的来说是一个小数,小数的存储不同于整数的存储,若有一个32位的整数,存储他时除了1位的符号位表示整数的正负之外其余的31位都用来存储数值。
  • IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。
  • 一个浮点数 (Value) 的表示其实可以这样表示:
    v a l u e = s i g n ∗ e x p o n e n t ∗ f r a c t i o n value=sign*exponent*fraction value=signexponentfraction
    value是实际的小数值,sign代表符号位,exponent代表指数偏移值,fraction代表分数值。
  1. 指数偏移值:是指浮点数表示法中的指数域的编码值为指数的实际值加上某个固定的值,IEEE 754标准规定该固定值为:2^ (e-1)-1,e为存储指数比特的长度。单精度浮点数的比特长度为8,故其偏移值为 2 7 − 1 = 127 2^7-1=127 271=127.
  2. 在利用二进制存储单精度浮点型数据时其符号部分,0表示正,1表示负。底数部分实际是占用24bit的一个值,但是最高位始终为1,所以,最高位省去不存储,在存储中占23bit科学计数法。指数部分占用8bit的二进制数,可表示数值范围为0-255。IEEE规定对于其指数部分应该减去其偏移值才是真正的指数,故,float类型的指数可从-127到128。
  3. 计算过程:若有一小数36.5,将其转换为二进制数据。 首先将其转换为直接的二进制数也就是100100.1,具体的运算过程为将整数部分36直接转换为二进制数也就是100100,小数部分小数点后第一位够0.5为1,也就是够 2^-1 为1,否则为0,例如小数点后为625,则为101,也就是说 0.625 = 0.5 + 0.125 = 2 − 1 + 2 − 3 0.625=0.5+0.125=2^-1+ 2^-3 0.625=0.5+0.125=21+23, 对应的中间缺少2^-2 ,在-2所在位补0即可。0.5对应 2 ^-1 转换为二进制直接为1即可。大致的原理与二进制与十进制的转换相同。
  4. 那么将36.5转换为100100.1后将二进制表示为以2为底的科学记数法,表示的结果为 1.001001 ∗ 2 5 1.001001*2^5 1.00100125 ,小数点向右移几位即为2的几次方。指数部分对应为5加上偏移量127,最后的值为132;132对应的二进制为1000 0100 ,加上表示正负的符号位0 1000 0100,尾数部分将100100.1前面的1去掉也就剩下001001,最后得出的二进制数为0100 0010 0001 0010 0000 0000 0000 0000。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值