当前位置: 首页 > 知识库问答 >
问题:

IEEE 754至十进制

公西凯捷
2023-03-14

我目前正在尝试将以下IEEE 754十六进制数0x805c00f0转换为其十进制等效值,根据在线转换器,该等效值约为-8.44920195816662938E-39。在纸上一步一步地计算出来,我得到以下结果:

805c00f0=1000 0000 0101 1100 0000 1111 0000最左边的1表示数字为负数。接下来的8位000 0000 0表示减去偏差后的指数为-127。剩下的是101 1100 0000 0000 1111 0000,尾数。

回想隐式1之后,我得到了-1.101 1100 0000 0000 1111 0000*2^-127。将小数点向左移动127位,我得到了-0.00(…)1101 1100 0000 0000 1111 0000. 总之,我得到-1(2^(-127)2^(-128)2^(-130)2^(-131)2^(-132)2^(-143)2^(-144)2^(-145)2^(-146))=-1.01020727331947522E-38。这不等于转换器给了我什么,我不明白为什么。我做错了什么?

共有1个答案

颜新
2023-03-14

根据维基百科,“存储的指数00和FF是专门解释的。”使用的公式是(−1) ^(符号位)×2^(−126)×0.(有效位)

805c00f0 =>
8 0 5 c 0 0 f 0 =>
1000 0000 0101 1100 0000 0000 1111 0000 =>
1 00000000 101 1100 0000 0000 1111 0000 =>
-1 x 2^(-126) x 0.10111000000000011110000 =>
-1 x 2^(-126) x (2^-1 + 2^-3 + 2^-4 + 2^-5 + 2^-16 + 2^-17 + 2^-18 + 2^-19) =>
-1 * (2^-127 + 2^-129 + 2^-130 + 2^-131 + 2^-142 + 2^-143 + 2^-144 + 2^-145) =>
-8.449202e-39
 类似资料:
  • Python3 实例 以下代码用于实现十进制转二进制、八进制、十六进制: # -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 获取用户输入十进制数 dec = int(input("输入数字:")) print("十进制数为:", dec) print("转换为二进制为:", bin(dec

  • 输入一个IEEE754的16进制表示字符串,怎么通过java转换为十进制,比如 将c4039333转换为 -526.29998779296875

  • 我需要转换十六进制- 当我运行这个错误实际上是显示我需要的值但我不能得到它 groovy.lang.的方法:静态java.lang.我nteger.parseInt()适用于参数类型:(java.math.大整数,java.lang.整数)值:[28855032353026779507009821653742961358,...]可能的解决方案:parseInt(java.lang.String,

  • 问题内容: 我这里有一个将十进制转换为十六进制的函数,但它以相反的顺序打印。我该如何解决? 问题答案: 如果要自己编写此代码而不是使用内置函数,则可以在打印当前数字之前简单地进行递归调用:

  • 问题内容: 为什么当我这样做: 我得到0,但是当我得到 我有价值吗? 我本来希望更高的精度除法返回更高的精度结果,为什么不是这种情况呢? 问题答案: 发生这种情况的原因是,对于数学运算,使用http://msdn.microsoft.com/zh- cn/library/ms190476.aspx#division中 找到的规则来计算得出的精度和小数位数 操作 e1 / e2 结果精度 p1-s1

  • 本文向大家介绍如何将十六进制转换为十进制?,包括了如何将十六进制转换为十进制?的使用技巧和注意事项,需要的朋友参考一下 而十六进制数是具有值是16的数字系统中的一个并且它具有唯一的16个码元:0,1,2,3,4,5,6,7,8,9和A,B,C,d,E ,其中A,B,C,D,E和F分别是十进制值10、11、12、13、14和15的单位表示。而十进制系统是最熟悉的号码系统向公众开放。它是10的基数,只