首页 > 其他 > 详细

计算机中浮点数的表示

时间:2020-09-06 08:59:01      阅读:79      评论:0      收藏:0      [点我收藏+]

IEEE浮点数表示:

在C语言中浮点数有两个size,32位和64位。其中32位浮点数:第1位是SignFlag(符号位),2-9位是阶码位(exponent),10-32位是尾数位(significand)。64位分别是第1位,2-12位,13-64位。
技术分享图片

浮点数大小的公式是:\(x = -1^{s} * 2^E*M\)

规格化值

\(E = exp-(2^{k-1}-1)\),将\(exp\)看作无符号整数,\(k\)\(exp\)的位数。

例如,对于32位浮点数来说\(k = 8,E\in[-126,127]\),对于64位浮点数来说\(k=11,E\in[-1022,1023]\)

\(M = 1+0.frac\),将\(frac\)看作小数值。

例如\(frac = 1011_2\),那\(M = 1_2+0.1011_2 = 1.1011_2 = 1\dfrac{11}{16}\)

这是通常情况下(规格化值)的计算公式,还有三种特殊情况。

非规格化值

\(exp=0\)时,即是非规格化的值,这时:

\(E = 1-(2^{k-1}-1),k\)\(exp\)的位数。

例如,对于32位非规格化值\(k=8,E = 1-(2^7-1) = -126\),对于64位来说\(k=11,E=1-(2^10-1)=-1022\),我们发现非规格化的\(E\)和规格化的\(E\)的下界相等,这会导致非规格化值到规格化值的平滑转换。

\(M = 0.frac\)

特殊值

\(exp的\)位模式全为1时,也就是无符号整数的最大值,这时为特殊值,有两个特殊值:

  1. \(frac=0\)时,浮点数为无穷大
  2. 否则,浮点数为NaN(Not a Number),例如:\(\sqrt{-1}\)

计算机中浮点数的表示

原文:https://www.cnblogs.com/rookiezjz/p/13620662.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!