浮点数在计算机中的存储形式

     IEEE754规定,对于32位浮点数(float),最高的一位是符号位s,接下来8位是指数位E,剩下的23位为有效数字位M;  对于64位浮点数(double),最高的一位是符号位s,接下来11位是指数位E,剩下的52位为有效数字位M。
     具体是怎么存放的呢?下面就以一个float型的数据12.5为例来看存储方式。
      12.5转换成二进制是1100.1,规范化指数形式为1.1001*2^3;规范化指数形式就是指小数点前面应该有一位且只能有一位非0的数字(即1)。其中规范化形式中指数都是2,小数点前面都是1,所以这两个相同的数字就不需要占用内存了,这样也可以提高数值的精度。
     首先对于符号位,正数为0,负数为1;因为这个数是正数,所以第一位就是存放0;其次是指数位,指数位占用了8个字节,最多可以存放256个数字,在一个有符号的整数中,我们都是以第一位来存放符号位的,那指数的符号位怎么存放呢?因为分了正负,所以一个字节的数字存储范围一般是-128到127,我们怎么将这些数字按无符号存储呢?结合这两点,我们引入了映射的观点,假设x是字面的指数,y是真实的指数,X的范围是0~255,y 
的范围是-128~127,所以另y=x-127;即真正的指数是3,但是我们要保存的字面指数为3+127即130  的二进制,即1000 0010;指数位就解决了,下面就是有效数字,其实就是小数点后的数字,为1001,只占了四位,所以剩下的19位全补0。最后存储的形式就是 0 1000 0010 10010000000000000000000;但是其实在内存中数据是以十六进制存放的,即0X 41480000,如果是小端的方式就是 0X 00 00 48 41。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值