计算机中浮点数的表示方法

在《计算机组成原理》中学过浮点数在计算机中的存储方式遵循IEEE 754浮点数计数标准,可以表示为:

在这里插入图片描述
采用 尾数+阶码 的编码方式,或者说:有效数字 + 指数位数
因此,只要给出符号位(S)、阶码部分E、位数部分M这三个维度信息,一个浮点数就完全表示出来了,所以float和double这两种类型的浮点数在计算机中的存储结构如下:
在这里插入图片描述

  1. 符号部分:S
    0-正 1-负

  2. 阶码部分E
    对于float类型,指数部分是8位,考虑正负,因此表示指数范围是-127-128
    对于double类型,指数部分11位,指数范围是-1023-1024

  3. 尾数部分M
    浮点数的精度是由尾数来决定的:
    float类型,尾数部分23位,换成十进制就是2^23=8388608,因此十进制精度只有6-7位
    对于double类型,尾数部分52位,换成十进制就是2^52 = 4503599627370496,所以十进制精度只有15 ~ 16位

因此,浮点数交给计算机存储时会出现精度丢失的问题。

进制转换问题

例如6.36转为二进制
在这里插入图片描述
整数和小数部分得到的二进制结果是:110.01011100…
按照尾数+阶码的方式
在这里插入图片描述
符号位:0
阶码E:127 + 2 = 129 二进制为:10000001
尾数部分M:1001011100…,其实它本身无限不循环,但若以float型精度来截取23位,则可以表示为10010111000010100011111
最终结果:0 10000001 10010111000010100011111
因此对于这种无限位数的尾数情况,计算机产生截取是必然的,必定会产生精度的损失,因此,在使用float和double时要结合业务考虑。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值