Floating point IEEE 754乘法小数
我想把这两个数字相乘: 001000100000000000000000000000(1.73472347598e-18) 及 00001010000000000000000000001(-2.997414069111348324895269018E-38) 规则是: (e1-127)+e2 所以指数是 (68-127)+42=-17 -17不能以IEEE754格式表示 这个计算器的指数是-126。 但是我怎样才能手工计算呢?1st:更正Floating point IEEE 754乘法小数,floating-point,ieee-754,Floating Point,Ieee 754,我想把这两个数字相乘: 001000100000000000000000000000(1.73472347598e-18) 及 00001010000000000000000000001(-2.997414069111348324895269018E-38) 规则是: (e1-127)+e2 所以指数是 (68-127)+42=-17 -17不能以IEEE754格式表示 这个计算器的指数是-126。 但是我怎样才能手工计算呢?1st:更正 0000101000000000000000000000
00001010000000000000000000001
不是-2.997414069111348324895269018E-38
,而是2.58493972238e-26
看
1.73472347598e-18*2.58493972238e-26
的产品大约是4.48416e-44
或十六进制/二进制expo符号0x1.0000002p-144
-144-(-127)是广受欢迎的-17
如何手动计算此值?表示指数是-126 “-17不能用IEEE754格式表示”不太正确 乘积小于最小标准化值(偏差指数小于1),但大于最小次标准化值。对于较小的值,扩展范围会牺牲精度。将-17增加到1(即-126的偏置指数),并将有效位
0x1.000002
18向右移动
s eeeeeeee mmmmmmmmmmmmmmmmmmmmmmm
0 00000000 00000000000000000100000
+0.000000000000000001000002*21-127
当编码的偏置指数为0时,将编码解释为偏置指数为1,而隐含的1位现在是0。我真的不明白为什么要将18右移。在-126偏置指数下,我有两种模式。当指数为0时,第一个字符为0;当指数为1时,第一个字符为1。所以我想只向右移动17次。@wwwww如果不使用次正常数,最小的标准化值是1.0*2^-126,编码为
0 00000001(1.)00000000000000000000000
。。要编码1.0*2^-127,我们右移一次:0.1*2^-126并编码为0 00000000(0.)100000000000000000000
我们需要编码4.48416e-44或1.0*2^-144,或者将1右移18次为0.000000000000000001*2^-126,并编码为0 00000000(0.)00000000000000000000000100000
“在-126偏置指数时,我有…”-->偏置指数是8位,值为0到255。当它为0时,二进制指数为-126。当它为[1…254]时,二进制指数为偏置指数-127
。