32位浮点数表示方法

今天开始给大家介绍计算机组成原理课程,本文主要内容是32位浮点数表示方法。

一、32位浮点数构成

32位浮点数是计算机中常见的一种数据类型,该数占据32bit空间,可以表示较大范围内的整数和小数。32位浮点数由三部分组成,分别是符号位(S)指数位(E)有效数位(M)
其中符号位为32位浮点数的第一个比特;指数位为符号位后面的8个比特;有效数位为最后面的23比特。
32位浮点数构成如下图所示:
在这里插入图片描述

二、32位浮点数计算

根据IEEE-745标准规定,32位浮点数计算规则如下表所示:

符号位 指数位 有效数位 表示
0/1 255 非零1XXXXX NaN
0/1 255 非零0XXXXX sNaN
0 255 0 +∞
1 255 0 -∞
0/1 1-254 f (-1)s×2(e-127)×1.m
0/1 0 f(非零) (-1)s×2(e-126)×0.m
0/1 0 0 ±0

总得来看,符号位如果是0,则表示该数是一个正数,如果为1,则表示该数是一个负数。指数位一共占了8个比特,因此取值范围是0-255,因为浮点数需要表示小数,因此我们把该数值减去127,因此取值范围是-127-128。但是,在这里全0和全1有单独的作用,因此其实际取值范围为-126-127,有效数位则表示了一个浮点数的数值部分,计算公式如上表所示。
如果指数位全部位1,并且有效数位全部位0,那么这个浮点数就表示无穷大,根据前面符号位的区别,可以区分位正无穷大和负无穷大。如果指数位全部为1,但是有效数位第一位为1,那么这个浮点数就表示NaN,及Not a Number,不是一个数字。如果有效数位第一位为0,但是后面的数值不全为0,那么这个浮点数就表示为SNaN,及Signaling Not a Number,一般用于标记未初始化的值,用于标记异常。
如果指数位全为0,而且有效数位全为0,那么该浮点数就表示0,根据符号位区分为正负0。而如果有效数位不全为0,那么仍旧表示一个数,但是其计算方式与普通情况有所差异,计算公式如上表所示。

三、32位浮点数表示范围

在学习了上述计算方法后,我们可以知道,32位浮点数就存在一个表示范围,如下图所示:
在这里插入图片描述
32位浮点数的正数最小值为:
S=0
E=0000 0000
M=000 0000 0000 0000 0000 0001
即2(-23) × 2(-127)
与之对应的32位浮点数的负数最大值为:
S=1
E=0000 0000
M=000 0000 0000 0000 0000 0001
即-2(-23) × 2(-127)
32位浮点数的正数最大值为:
S=0
E=1111 1110
M=111 1111 1111 1111 1111 1111
即(2-2(-23) )×2127
这里的(2-2(-23) )其实是1+2-1 + 2-2 +2-3 +2-4 +……+2-23
与之对应的32位浮点数的负数最小值为:
S=1
E=1111 1110
M=111 1111 1111 1111 1111 1111
即-(2-2(-23) )×2127
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

猜你喜欢

转载自blog.csdn.net/weixin_40228200/article/details/128565065
今日推荐