计算机浮点数的知识,浮点数基础知识科普

浮点数,是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

1 、浮点数基础知识

4f323b1f83e78bd6052b83bf79cd9e08.png

浮点数由四部分构成:符号位(Sign Bit)、尾数(Mantissa)、基数(Radix)和指数(Exponent)。根据《IEEE Standard 754 for Binary Floating-Point Arithmetic》的定义–二进制标准浮点数,基数为2。s、m、e分别为符号数、尾数和指数,n为相应的浮点数值。

ede2400a7d4dd510309c146e69c37748.png

IEEE-754规定了三种浮点数:单精度(float)、双精度(double)和扩展精度。

其中单精度为32bit,其中包含1位符号位S,8位指数位E和23位尾数位M。S、E、M为相应的二进制序列。

a7051b8770f105f3aeb03b6ca0157772.png

S:

正数 0.1xxxxxx

负数 1.1xxxxxx

M:

表示小数点之后的二进制尾数。

M为0110表示:二进制.0110

E:

规格化(normalized)

非规格化(denormalized)

2 、规格化浮点数

E表示的二进制不全为0也不全为1时该浮点数为规格化浮点数。

6ef93cd9c0287368015de1fa24280aac.png

e表示偏置(Biased)

|E|表示E的二进制整数

bias表示偏置

k为指数位宽

对于单精度浮点数来说k为8,所以bias为127。E=“10001000”为例,|E|=136,故e为9。

对于规格化浮点数,标准规定尾数位小数点左侧的隐含位为1,所以:

m = |1.M|

例如M=“10010…0”则1.M=“1.10010…0”所以m=1.5625

15190e30a9acef5dda4abd76cdda5398.png

s=0

m = 1.5625

e =9

n =55.5112

单精度浮点数的公式可表示为:

b6f536c1946bbbe30d5f0ef34a5cfe09.png

3、非规格化浮点数

E的二进制位全为0时该浮点数为非规格化浮点数。

bias=127

cf125416a1a441e4d962be7ce62720bf.png

单精度非规格化浮点数公式:

8040b748cfedfc1d58267fdc13aa057a.png

-0.0 符号位为1,其余位为0.

+0.0全部为0.

4、特殊数值

E的二进制位全为1时为特殊数值。

M全0,n无穷大

M全1,S为1,n负无穷大

M全1,S为0,n正无穷大

M不全为0和1,n NaN(Not a Number)

d2cdc638b400a37ac9d6979e846efeab.png

5 、双精度浮点数

IEEE-754定义双精度浮点数共64bit 。1位符号位S,11位指数位E和52位尾数位M。同样可以划分为规格化、非规格化和特殊数值。

5fef5a4bd2eb5d831869be71fd515ae7.png

8c975c43333caa7bd97bfeebaeeef08c.png

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值