声明,此篇文章针对南京大学的线上课程https://www.coursera.org/lear...,以便回顾。编码
上图描述中是咱们平常十进制数字的科学表示法。计算机中的浮点数表示也是基于科学表示的思想来设计的。spa
一样浮点数表示法也有规定的格式表示,小数点前只有一个有效位。这是规格化的浮点数表示。只要对尾数和指数进行编码,就能够在计算机中表示一个浮点数,也就是实数。操作系统
假如是32位操做系统中,表示一个浮点数的范围如上图,第0位S为符号位,表示浮点数的正负。第1到8位进行移码后的机器码表示指数(阶码)。第9到31位是来表示尾数部分的机器码。由于规格化后的尾数部分小数点前老是1,因此规定第一位默认的1不表示出来,这样就能够腾出来一个数位来表示更多的实数。(23位长度能够表示24位长度的机器码)设计
IEEE754中定制了单精度的标准:
用1位来表示正负符号,8位表示阶,23位表示尾数。阶码范围能够表示为 0000 0000~1111 1111,可是为了考虑阶也可能存在负值,因此规定阶的真值加上偏置常数后的机器码才是机器存入的值。而偏置常数规定单精度为2^(8-1) - 1,双精度为2^(10-1) -1。又由于全0和全1有特殊的用途,因此规格化后的阶码表示范围为0000 0001(真值-126) ~ 1111 1110(真值127)。
一、0的机器码表示,在IEEE754标准中,全0指数和全0尾数能够表示0,而符号位若是是0的话就是+0 而符号位是1的话就是-0。
二、+/-无穷:浮点数除0结果是是正负无穷,而不是溢出异常。整数除0为异常。全1的阶码和全0的尾数表示正负无穷大。
三、非数:全0阶码和非0尾数。即非格式化数(小数点前是0,小数点后若干0)。blog