IEEE 754乘法小数

问题描述

我想将这两个数字相乘:

00100010000000000000000000000000(1.73472347598e-18)

00010101000000000000000000000001(-2.997414069111348324895269018E-38)

规则是:

(e1-127)+ e2

所以指数是

(68-127)+ 42 = -17

-17不能以IEEE754格式表示代表

此计算器表示指数为-126。 但是我该如何手工计算呢?

解决方法

第一:更正

00010101000000000000000000000001不是-2.997414069111348324895269018E-38,而是2.58493972238e-26
参见IEEE-754 Floating Point Converter


1.73472347598e-18 * 2.58493972238e-26的乘积约为4.48416e-44或十六进制/二进制表示形式0x1.0000002p-144。 -144-(-127)是-17所追求的。

我该如何手动计算?
说指数是-126

“-17不能以IEEE754格式表示”。

乘积小于最小的归一化的值(有偏指数小于1),但大于最小的次归一化值。 IEEE format牺牲精度以扩展微小值的范围。将-17增大到1(即-126的有偏指数),然后将有效数0x1.000002右移18。

s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
0 00000000 00000000000000000100000

+0.00000000000000000100000 2 * 2 1-127

当编码的有偏指数为0时,将编码解释为有偏指数为1,但隐含的1位现在为0。