浮点数是怎么表示的呢?

如题所述

完整的浮点数表示包括以下几点:

符号(S):1位二进制位,0表示正数,1表示负数。阶码部分(E):根据不同的精度E的位数不同(参照下图float与double的区别),表示小数点向右移动的位数。E>0 表示向右移动,E<0表示向左移动。

尾数部分(M):根据不同的精度M的位数不同参照下图float与double的区别),是浮点数的二进制表示。需要注意的是这里尾数部分为 1.M... ,所以遇到类似0.125这样的小数,其二进制表示为 0.1001111... ,这时就需要将小数点右移1位才符合要求。

浮点数的精度:在像C/C++这样的语言中,浮点数有float,double类型,他们的精度是不一致的。

float类型:使用32位表示,1位符号,8位阶码(阶码包含一位符号位),23位尾数(无符号位)。阶码的范围: 使用移码表示,偏置取127,表示数的范围为[-126,127](由IEEE 754标准规定,见下文)。尾数范围: 实际应当用24位表示,但由于第一位必须为1,则采用23位表示(节省了一位来提高精度),[0,2^23=8388608]

Double类型:使用64位表示,1位符号,11位阶码(阶码包含一位符号位),52位尾数(无符号位)。阶码的范围: 与float类型一样,使用移码表示,偏置取127,表示数的范围为[-1022,1023]。尾数范围: 实际应当用53位表示,但由于第一位必须为1,则采用52位表示(节省了一位来提高精度)

浮点数的二进制表示:10进制浮点数转换为二进制表示很简单,分2个部分讨论。整数部分:采用除2取余法计算(直到被除数为0);小数部分:采用乘2取整法计算(直到小数部分为0,对于无限小数采取截断方式)。最后用整数二进制表示.小数二进制表示就可以得到完整的浮点数二进制表示了。

温馨提示:答案为网友推荐,仅供参考
相似回答