数符S:表示浮点数的符号,占1位,0—正数、1—负数; 尾数M:23位,原码纯小数表示,小数点在尾数域的最前面; 阶码E:8 位,采用有偏移值的移码表示; 移127码,即E=e+127,E的8位二进制数即为移127码的编码; 浮点数的真值:N=(-1)S×(1.M)×2^(E-127) 一个带有符号位的八位数,就是-127~+127; IEEE754规定:当阶码全为0时(0000 0000)根据符号位,有正0和负0之分;当阶码全为1时(1111 1111)根据符号位,有正无穷大和负无穷大之分; 我们去掉这两个边界,范围就成了1-254,-127~+127 就变成了-126 ~-0和1 ~127 ,即-126 ~+127. 如果去掉0000 0000和1111 1111,考虑到符号,0000 0000是+0,1111 1111是-127,也就是在-127 ~+127上删掉了+0和-127,因此范围是-126 ~-0 和1~127,即-126 ~127,结果保证了指数取值范围的对称性,也就解释清楚了最高位当符号位的原因。 对于64位浮点数,西门子TIA博图中LREAL有详细的说明: 对于上周有朋友提出为什么32位REAL格式的指数需要-127,可以参考以上相关内容。 来源:西门子工业技术论坛 |