浮点数的机器表示

浮点数的机器表示

上图为浮点数在机器中表示的结构,分为三部分:

若浮点数表示为(-1)s M 2E的形式,则

s(符号位,0代表正,1代表负)

exp(阶码) = E +bias  (bias为偏移量:float 取127,double取1023)

frac(尾数域,M是一个位于区间[1.0,2.0)内的小数,而frac隐含了M的整数部分1,只保留小数部分)

IEEE标准中各域的长度:

float(单精度型):总长32位,s占1位,exp占8位,frac占23位

double(双精度型):总长32位,s占1位,exp占11位,frac占52位

 

例:

float F = 15213.0

1521310 = 111011011011012 = 1.11011011011012×213
则:
符号位s:0
阶码exp:13+127=14010=100011002(若位数不够8位在前面补0)
尾数frac:11011011011010000000000(位数不够23位在后面补0)

所以单精度浮点数15213.0在机器中表示为 0  10001100 11011011011010000000000

 

几种特殊情况:(非规格化浮点数)

  1. exp=000…0,frac=000…0
    该数表示0
  2. exp=000…0,frac≠000…0
    表示非常接近0,因为该数非常小,除以2-bias+1后整数部分还是为0,所以此时尾数域用0.xxxxx表示,frac隐含了整数部分0
  3. exp=111…1,frac=000…0
    表示无穷(有正无穷和负无穷)
  4. exp=111…1,frac≠000…0
    表示NaN(Not-a-Number)
4+
Rhett Peng

软件工程大三在读学生,用个人网站记录学习动态

说点什么

avatar