首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将IEEE浮点数(S、分数、指数)中表示的下列32位二进制数字转换为十进制数

将IEEE浮点数(S、分数、指数)中表示的下列32位二进制数字转换为十进制数
EN

Stack Overflow用户
提问于 2012-12-15 22:47:56
回答 2查看 3.3K关注 0票数 0

0000000000000000000 0111011

我怎么做这个问题我迷路了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-15 23:10:16

您的大胆表示您可能对字段的顺序有些困惑;IEEE通常将order 符号、指数、分数用于浮点数。(顺便说一句,如果没有NaNs或其他非数字值,这允许使用两个补整数排序来对IEEE浮点数进行排序。)

那我们在看什么呢?第一位是符号: 0。所以我们有一个正数。(如何记住这个?回到允许使用的整数排序--在两个补整数中领先的一个--表示它是负的。)

接下来的八个位是指数:也是0。这是最低可能的指数值;它通常表示一个不带符号的整数,其值为127或-127。然而,指数值0被保留用于编码次法线数(小于最小的通常可表示的数);在这种特殊情况下,有效指数是-126,但不代表数字1分数*2^指数,次法线表示数字0分数*2^指数。

最后,我们得到了分数,也就是0000000000000000111011。我们的总数是0.000000000000111011b* 2^-126。将其转换为十进制将留给读者。

票数 2
EN

Stack Overflow用户

发布于 2012-12-16 00:20:19

我同意@addaon之前发布的答案。此外,在一些语言中可以轻松地完成转换,包括Java:

代码语言:javascript
运行
复制
public class Test {
   public static void main(String[] unused) {
      int raw = 0b0000000000000000000000000111011;
      float f = Float.intBitsToFloat(raw);
      System.out.println(f);
   }
} 

(您需要版本7才能获得二进制文本,但在早期版本中也可以少直接做同样的事情)

输出值为8.3E-44,与正正非正态化数字的解释一致,与转换网站一致。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13896907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档