所以像上面一样,我想找到-1x10 ^ 200的IEEE 754表示形式。
我知道我们可以使符号为1,因为我们有一个负数。但是我不确定如何找到尾数/指数。我最初的想法是将10 ^ 200转换为2 ^ x。但是,x不是整数。因此,我认为我们需要通过某种方式分离10 ^ 200来获得分数。从理论上讲,可以使用很长的除法,但是我正在寻找一种更优雅的答案,而无需高精度计算器就可以完成。
答案 0 :(得分:5)
-10 200 不能以IEEE-754基本64位二进制格式表示。可以表示的最接近的数字是-99999999999999996973312221251036165947450327545502362648241750950346848435554075534196338404706251868027512415973882408182135734368278484639385041047237237871023591066789981811181813306167128854888
64位格式的编码为0xe974e718d7d7625a。它的符号为−(在第63位编码为1),指数为664(在第62至52位编码为1687或0x697),有效值为0x1.4e718d7d7625a(在第51至0位编码为0x4e718d7d7625a)。
鉴于指数为664,您可以通过将10 200 除以2 664 来找到有效位数,将结果写入二进制文件,然后在取整后的52位后舍入小数点。或者,除以2 664 之后,再乘以2 52 并舍入为整数。