操作系统之浮点数表示

序言

声明,此篇文章针对南京大学的线上课程https://www.coursera.org/lear...,以便回顾。

  • 科学计数法

上图描述中是我们日常十进制数字的科学表示法。计算机中的浮点数表示也是基于科学表示的思想来设计的。


  • 浮点数表示

同样浮点数表示法也有规定的格式表示,小数点前只有一个有效位。这是规格化的浮点数表示。只要对尾数和指数进行编码,就可以在计算机中表示一个浮点数,也就是实数。

  • 浮点数的表示范围

假如是32位操作系统中,表示一个浮点数的范围如上图,第0位S为符号位,表示浮点数的正负。第1到8位进行移码后的机器码表示指数(阶码)。第9到31位是来表示尾数部分的机器码。因为规格化后的尾数部分小数点前总是1,所以规定第一位默认的1不表示出来,这样就可以腾出来一个数位来表示更多的实数。(23位长度可以表示24位长度的机器码)

  • IEEE754标准

IEEE754中定制了单精度的标准:

用1位来表示正负符号,8位表示阶,23位表示尾数。阶码范围可以表示为 0000 0000~1111 1111,但是为了考虑阶也可能存在负值,所以规定阶的真值加上偏置常数后的机器码才是机器存入的值。而偏置常数规定单精度为2^(8-1) - 1,双精度为2^(10-1) -1。又因为全0和全1有特殊的用途,所以规格化后的阶码表示范围为0000 0001(真值-126) ~ 1111 1110(真值127)。
1、0的机器码表示,在IEEE754标准中,全0指数和全0尾数可以表示0,而符号位如果是0的话就是+0 而符号位是1的话就是-0。
2、+/-无穷:浮点数除0结果是是正负无穷,而不是溢出异常。整数除0为异常。全1的阶码和全0的尾数表示正负无穷大。
3、非数:全0阶码和非0尾数。即非格式化数(小数点前是0,小数点后若干0)。

你可能感兴趣的:(操作系统)