如何将-1x10 ^ 200转换为IEEE 754双精度

问题描述 投票:-1回答:1

如上所述,我想找到-1x10 ^ 200的IEEE 754表示。

我知道我们可以得到标志为1,因为我们有一个负数。但是我不确定如何找到尾数/指数。我最初的想法是将10 ^ 200转换为2 ^ x。但是x不是整数。所以我认为我们需要以某种方式通过以某种方式分离10 ^ 200得到一个分数。从理论上讲,人们可以使用非常长的分离,但我正在寻找一个更优雅的答案,可以在没有高精度计算器的情况下完成。

c++ floating-point binary double ieee-754
1个回答
5
投票

-10200不能用IEEE-754基本64位二进制格式表示。可以表示的最接近的数字是-99999999999999996973312221251036165947450327545502362648241750950346848435554075534196338404706251868027512415973882408182135734368278484639385041047239877871023591066789981811181813306167128854888448。

64位格式的编码是0xe974e718d7d7625a。它有一个符号 - (在第63位编码为1),指数为664(在第62到52位编码为1687或0x697),有效数为0x1.4e718d7d7625a(在第51到0位编码为0x4e718d7d7625a)。

假设指数为664,则可以通过将10200除以2664,将结果写为二进制,并在小数点后的52位后舍入来找到有效数。或者,在除以2664之后,乘以252并舍入为整数。

© www.soinside.com 2019 - 2024. All rights reserved.