浮点数的表示方法(简洁易懂)


title: 浮点数的表示方法
date: 2023-09-19 17:50:49
tags: Computer science


浮点的表示方式

浮点的表示方法我在我前面发布的《计算机工作原理》中简单说明了,这里我们详细讲一下它的单精度(float)和双精度(double)表示方法。

单精度(float)

单精度浮点数拥有4个字节(byte),即32位的存储空间,其中1位用来存储符号,称为符号位(Sign),8位的阶码(exponent),23位的尾码(mantissa)。

数值范围:-3.4E38~3.4E38(E就是10)。

例如,求5.25在计算机中的存储表示。、

整数部分:5/2=2…1

2/2=1…0

1/2=0…1

so整数部分101

小数部分:0.25*2=0.5

0.5*2=1

so小数部分0.01

so5.25D=101.01B

101.01=1.0101*2^2

阶码的真值就是2+127=129=128+1(这样表示有好处)

尾码就是0101(隐藏整数部分,称为隐藏位)

双精度(double)

区别在于存储空间从4个字节变为了8个字节(64位)。包含符号位1位,阶码11位,尾数52位,数值范围也变大了:-2.23E308~1.79E308(E就是10)。

IEEE 754标准

float和double浮点是表示都遵从IEEE标准:

S(sign)+阶码(component,含阶符)+小数点位置+尾数(mantissa)

除了float和double还有一种临时实数类型浮点数:

符号位阶码尾数总位数
短实数182332
长实数1115264
临时实数1156480

用S表示数符,E表示阶码,M表示尾数。

需要强调的是,阶码都用移码表示,所以阶码的真值都需要加上一个127(偏移量),不同精度的浮点数的偏移量不同(短实数是127,长实数是1023,临时实数是16383)。

取值范围取决于阶码,精度取决于尾数占的位数。

还是举之前的例子:5.25

前面得到了尾码M=0101

偏移量E = 2 + 127 =128 + 1 = 100001B

所以存储的二进制表示为:

01000010101000000…

每4个为一组,转换为16进制:

(4 2 A 00000)H

4是0100的十六进制表示,2是0010的十六进制表示,A是1010的十六进制表示,后面补位到8位。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值