如何将 -1x10^200 转换为 IEEE 754 双精度
How to convert -1x10^200 to IEEE 754 double precision
所以像上面一样,我想找到 -1x10^200 的 IEEE 754 表示。
我知道我们可以让符号为 1,因为我们有一个负数。但是我不确定如何找到 mantissa/exponent。我最初的想法是将 10^200 转换为 2^x。但是 x 不是整数。所以我认为我们需要通过某种方式将 10^200 分开来得到一个分数。理论上可以使用很长的偏差,但我正在寻找一个更优雅的答案,无需高精度计算器即可完成。
−10200 无法用 IEEE-754 基本 64 位二进制格式表示。 The closest number that can be represented is -99999999999999996973312221251036165947450327545502362648241750950346848435554075534196338404706251868027512415973882408182135734368278484639385041047239877871023591066789981811181813306167128854888448.
这个64位格式的编码是0xe974e718d7d7625a。它的符号为 −(在位 63 中编码为 1),指数为 664(在位 62 到 52 中编码为 1687 或 0x697),有效数为 0x1.4e718d7d7625a(在位 51 到 0 中编码为 0x4e718d7d7625a)。
鉴于指数是664,你可以用10200除以2664得到有效数字,将结果写成二进制, 并在小数点后的 52 位后舍入。或者,在除以 2664 后,乘以 252 并四舍五入为整数。
所以像上面一样,我想找到 -1x10^200 的 IEEE 754 表示。
我知道我们可以让符号为 1,因为我们有一个负数。但是我不确定如何找到 mantissa/exponent。我最初的想法是将 10^200 转换为 2^x。但是 x 不是整数。所以我认为我们需要通过某种方式将 10^200 分开来得到一个分数。理论上可以使用很长的偏差,但我正在寻找一个更优雅的答案,无需高精度计算器即可完成。
−10200 无法用 IEEE-754 基本 64 位二进制格式表示。 The closest number that can be represented is -99999999999999996973312221251036165947450327545502362648241750950346848435554075534196338404706251868027512415973882408182135734368278484639385041047239877871023591066789981811181813306167128854888448.
这个64位格式的编码是0xe974e718d7d7625a。它的符号为 −(在位 63 中编码为 1),指数为 664(在位 62 到 52 中编码为 1687 或 0x697),有效数为 0x1.4e718d7d7625a(在位 51 到 0 中编码为 0x4e718d7d7625a)。
鉴于指数是664,你可以用10200除以2664得到有效数字,将结果写成二进制, 并在小数点后的 52 位后舍入。或者,在除以 2664 后,乘以 252 并四舍五入为整数。