Math 浮点指数的偏差值和范围
我意识到,坐在我的大学课桌上时,我没有及时注意IEEE 754标准的浮点部分。然而,即使我目前没有为嵌入式的东西而挣扎,我也觉得自己不称职,没有资格获得工程师头衔,因为我缺乏某种数学计算方法,完全掌握了标准 我知道的是Math 浮点指数的偏差值和范围,math,floating-point,precision,ieee-754,Math,Floating Point,Precision,Ieee 754,我意识到,坐在我的大学课桌上时,我没有及时注意IEEE 754标准的浮点部分。然而,即使我目前没有为嵌入式的东西而挣扎,我也觉得自己不称职,没有资格获得工程师头衔,因为我缺乏某种数学计算方法,完全掌握了标准 我知道的是 0和255是表示0和无穷大的特殊值 价值观 有隐式1用于将23位表示为24 其中,e仅当它是000时变为1,如果它是111且尾数是0000,则它是无穷大,如果它是111且尾数是XXXX,则它不是一个数字 我不明白的是 我们如何才能包括在内地提到-126和127?总的
和0
是表示255
和0
无穷大的特殊值 价值观
- 有隐式
用于将1
表示为23位
24
-
其中,
仅当它是e
时变为1,如果它是000
且尾数是111
,则它是无穷大,如果它是0000
且尾数是111
,则它不是一个数字XXXX
- 我们如何才能包括在内地提到
和-126
?总的可能性是多少 254个值作为包含值进行分段127
- 为什么选择
作为偏差值127
- 一些资料来源解释分段为
但是。这真是错综复杂[-126..127]
- 如果不是前面提到的第二个来源,我们怎么能说最小的
?如果它是2^{-126}
?(虽然苦苦挣扎,但我至今仍无法用头脑去理解它:)2^{-125}
- 对偏差值使用模余数运算符而不是减法(即
)不是更合乎逻辑吗?(由于以下原因进行了更正)2^{e%127}
指数范围 对于32位浮点,原始指数
rexp
为8位
,偏差为127
。排除特殊情况{0255}
我们得到
应用偏差:
expmin = 1-127 = -126
expmax = 254-127 = +127
非规范值没有隐式1,因此对于最小数,mantisa为1
,如果指数应指向mantisa的lsb,则我们需要再移动几次:
expmin = 0-127-(23-1) = -149
正常最大值将与最大mantisa一致,因此:
max = ((2^24)-1)*(2^127) = (2^24)*(2^127) - (2^127) = 2^151 - 2^127
因此float
的实际范围(包括非规范值)为:
<2^-149 ,2^+151 )
<1.40e-45,2.85e+45)
使正指数和负指数的范围尽可能相同
模
使用exp=rexp%127
将不会从unsignedrexp
中获得负值,无论除法操作是否缓慢(至少在创建规范时)。。。这就是为什么exp=rexp偏差
我们如何才能包括在内地提到-126
和127
?如何将所有可能的254个值划分为包含值
IEEE 754-2008 3.3规定,任何格式的最小指数emin应为1−emax,其中emax是最大指数。该条款中的表3.2规定32位格式(命名为“binary32”)的emax应为127。所以艾敏是1−127 = −126
没有数学上的限制来迫使这一点。选择这种关系是出于偏好。我记得有一种愿望,希望积极的指数略高于消极的指数,但我不记得这样做的理由
为什么选择127
作为偏差值
一旦选择了上述边界,127就必然是将其编码为8位所需的值(作为代码1-254,而将0和255作为特殊代码)
一些资料来源解释分段为
[-126..127]
,但一些[-125…128]
。这真是错综复杂
给定二进制32的位,即符号位S、八个指数位E(表示数字E的二进制)和23个有效位F(表示数字F的二进制),并给定0- 所代表的数字是(−1) S•2e−127•(1+f/223)
- 所代表的数字是(−1) S•2e−127•1.F2
- 所代表的数字是(−1) S•2e−126•(½+f/224)
- 所代表的数字是(−1) S•2e−126•.1F2
- 所代表的数字是(−1) S•2e−150•(223+f)
- 所代表的数字是(−1) S•2e−150•1F.2
2^{-126}
最小正正常值有S位0、E位00000001和F位00000000000000000。在第一种形式中,这表示+1•21−127 • 1 = 2−126.在第二种形式中,它表示+1•21−126 • ½ = 2−126.在第三种形式中,它表示+1•21-150•223=2−126.所以形式是不相关的;表示的值是相同的
使用余数运算符不是更多吗
<2^-126 ,2^+127 >
<1.175e-38,1.701e38>
bias = (0+255)/2 = 127