请问算浮点数据的编码方式吗?

请问会算浮点数据的编码方式吗?请教教我啊?
2025-02-24 23:20:26
推荐回答(1个)
回答1:

这个我知道:
任意一个十进制数 N 可以写成

N=10E.M (2.3)

同样,在计算机中一个任意进制数 N 可以写成

N=Re.m (2.4)

m :尾数,是一个纯小数。

e :比例因子的指数,称为浮点的指数,是一个整数。

R :比例因子的基数,对于二进计数值的机器是一个常数,一般规定R 为2,8或16。

一个机器浮点数由阶码和尾数及其符号位组成(尾数:用定点小数表示,给出有效数字的位

数决定了浮点数的表示精度;阶码:用整数形式表示,指明小数点在数据中的位置,决定了浮点

数的表示范围。):
32位的浮点数中,S:浮点数的符号位,1 位,0表示正数,1表示负数。M:尾数,23位,

用小数表示,小数点放在尾数域的最前面。E:阶码,8 位阶符采用隐含方式,即采用移码方

式来表示正负指数。移码方法对两个指数大小的比较和对阶操作都比较方便,因为阶码域值大

者其指数值也大。采用这种方式时,将浮点数的指数真值e 变成阶码E 时,应将指数 e 加上

一个固定的偏移值127(01111111),即 E=e+127.

[例1] 若浮点数x的二进制存储格式为(41360000)16,求其32位浮点数的十进制值。

[解:]
将十六进制数展开后,可得二进制数格式为

指数e=阶码-127=10000010-01111111=00000011=(3)10

包括隐藏位1的尾数1.M=1.011 0110 0000 0000 0000 0000=1.011011

于是有
x=(-1)s×1.M×2e
=+(1.011011)×23=+1011.011=(11.375)10

[例2] 将十进制数数20.59375转换成32位浮点数的二进制格式来存储。

[解:]

首先分别将整数和分数部分转换成二进制数:

20.59375=10100.10011

然后移动小数点,使其在第1,2位之间

10100.10011=1.010010011×24 e=4

于是得到:

S=0, E=4+127=131, M=010010011

最后得到32位浮点数的二进制存储格式为:

0100 0001 1010 0100 1100 0000 0000 0000=(41A4C000)16