浮点数的二进制表示

我们知道
整型数据进行进制转换即可	如 5 ->> 101
但实数怎么表示呢?

首先
数据类型有 float double 两种分别 32位 64位(4 、8字节)

浮点标准表示数
数 V=(-1)^s * M * 2^E
这个式子看起来有点复杂
但是对二进制操作却很方便(2^n其实就是小数点的移位操作)

其中 s M E由数据的三段决定(s 、 exp、 frac)

数据

		单精度float	

在这里插入图片描述

		双精度double

在这里插入图片描述

其中 公式中s = s 的值
根据exp的值分为三种情况:

在这里插入图片描述

case1:规格化的值	(exp的位既不全为0,也不全为1)

E=e-Bias
e即为exp的值
Bias=2^(k-1)-1	(k就是exp的位数)
			可以看出E的取值是  -2^(k-1)-1 ~ 2^(k-1)

E=exp的值-(2^(k-1)-1)	(k就是exp的位数)
M=1+f
f就是frac的值


结果 V=(-1)^s * M * 2^E
case2:非规格化的值	(exp的位全为0)

E=1-Bias
Bias=2^(k-1)-1	(k就是exp的位数)

M=f
f就是frac的值
case3:特殊值		(exp位全为1)

frac位全为0时
s=0+oo
s=1-oo

frac位不是全0时
结果值称为 'NaN' 即 ‘Not a Number’的简称

针对case1、2、3举几个例子:

设E为4位
frac为3位

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值