浅析浮点数与定点数

1.浮点数存储形式:

浮点数的小数点位置是变化的,用阶码和尾数开表示,不用惧怕它的表示形式,它也是一串亲切0、1序列。IEEE754标准从逻辑上用三元组{S,E,M}表示一个浮点数N,如下图所示:(以四字节单精度的浮点型数据为例)

其中:

S表示该浮点数N的符号位,0代表正,1代表负;

E为阶码,表示N的指数位,用一个字节表示(8位)

M 为尾数,表示小数部分,该部分决定了浮点型数据的有效数字或精度

下面来看一下如何将一个实数浮点型按该格式存储为二进制:

 以3.25为例:

         首先可以得到符号位S=0;

然后将3.25转化为二进制表示:11.01,进而变化为:1.101*2^1;

         那么,阶码即为1+bias=1+127=128;(单精度浮点型数据的偏移量bias为127)

                   所以E=10000000

尾数为省去默认的小数点左边的1后剩下的数,即为:101,这也就是为什么23位的尾数可以表示24位精度的缘故。所以M=10100000000000000000000;

所以3.25的二进制存储为:01000000010100000000000000000000

同样,给你一个存储形式按照上边的逆过程你也可以得到他要表示的浮点型数据,这里就不多说了。好吧,还是举个例子吧:

比如:二进制形式为:1 01111010 11000000000000000000000

     首先符号位为1,表示该数据为负

     E=01111010,01111010转换为十进制为:122,     122-127=-5;

     M=11000000000000000000000

所以该数为:1.11000000000000000000000*2^(-5)=0.0000111,后边的0可以省略了

转化为十进制:0.0546875

Ok,打完收工!

2.定点数:

         定点数是指小数点的位置是固定不变的,通常分为定点小数和定点整数,用之前先规定好小数点的位置,可以在符号位和数字有效位之间,也可以在数字有效位之后,运算简单,但是表示范围小,要考虑溢出,一般在DSP中有用。

没有更多推荐了,返回首页