我必须用浮点数表示一个二进制数。 我有一个十六进制数FFFF,当我将该十六进制数转换为Binary时,我得到的对应二进制数为1111111111111111。我的Intel处理器使用的存储格式是32位表示1位表示符号,8位表示指数,尾数为23位。 我有一些主意但是很困惑。 有人可以帮我解决这个二进制数对应的浮点值吗?

===============>>#1 票数:4

32个

只需尝试一下:

#include <stdio.h>

int main() {
  union {
    unsigned i;
    float f;
  } u;
  u.i = 0xffffffff;
  printf("%f\n", u.f);
  return 0;
}

打印-nan 此实验假设您实际上要0xffffffff而不是0xffff作为问题陈述。

查看http://en.wikipedia.org/wiki/Single_precision,您会发现指数0xFF与非零有效数字一起被视为NaN。

16个

如果您确实是在0xFFFF之后,如您的问题所写,那么代码将输出0.000000 ,但是将%f更改为%g您将获得9.18341e-41 这是因为整数和浮点数都使用相同的字节序,即,您所讨论的浮点数对应于位模式0x0000ffff

在那里,您将看到零符号(即正数),零指数和非零有效数。 根据同一维基百科的文章,这表示一个不正常的数字 所以这实际上是0xffff∙2 −149 = 65535∙2 −149

===============>>#2 票数:3

假设IEEE-754 32位浮点数为0xFFFFFFFF0xFFFFFFFF 32个):

第一个是符号,所以它是负浮点数。 然后是指数,因为它是最大值,所以它是“特殊”指数。

因为有效NaN不为零,所以结果为NaN

资料来源: Wikipedia

如果您只想要16个,则:

假设剩余的位为零,并且我们使用的是低端字节序,那么我们将得到“ 0xFFFF0000”。 这仍然不足以使有效位数为零,因此结果仍然是“ NaN”。 实际上,无论您为后16位选择哪个值,结果始终为NaN。

显然,MvG并非如此。

假设其余位为零,则输入为0x0000FFFF 第一位是符号,为零。 因此,我们有一个积极的浮动。
然后我们有8位的指数。 由于它们全为零,因此我们将根据零分获得零或次正规数。
由于分数不全为零,因此该浮点数是次正规数。
至此,我们已经检查了9位,因此仍然有7个额外的零。
分数由7个零组成,后跟16个零,因此有效0.00000001111111111111111为(二进制) 0.00000001111111111111111 将其乘以2e-126 ,您将得到答案。
结果显然是9.18341e-41

  ask by AshA translate from so

未解决问题?本站智能推荐:

4回复

程序处理

所以我发现,当程序执行EIP指针设置为代码段中的第一条指令时,处理器就会执行一个执行循环: 将EIP指向第一条指令 将指令的字节长度添加到EIP 执行在步骤1中读取的指令 回到1 我的问题是,步骤2中会发生什么? 请回复谢谢
2回复

处理器使用Intel QuickPath Interconnect(QPI)来访问内存吗?

我已阅读英特尔®QuickPath互连简介 。 该文档未提及处理器使用QPI来访问内存。 所以我认为处理器不通过QPI访问内存。 我的理解是否正确?
1回复

32/64位应用程序,操作系统和处理器之间有什么关系?

我已经搜索了这些主题,但是不确定我是否正确理解了它们之间的关系。 我总结了以下几点,请纠正/补充。 32位或64位处理器意味着该处理器可以一次处理32/64位。 使用32位或64位处理器表示基础寄存器,地址总线或数据总线的大小也相同。 为了在32/64位处理器上工作,我们有
1回复

如何登记二进制值?

只是好奇心,二进制值如何填充在处理器内存中? 它和ram一样吗? 那是什么 ? 磁力? 好吧,我想知道,因为我的图像信号有一个电流,如果后者是真的,怎么能在一个存储空间中存储一个流? 感谢头部报道!
6回复

32对64位......或者,'处理信息'究竟是什么意思

我无法理解32位处理器和64位处理器之间的区别。 我知道32位处理器一次可以访问32位,而64位处理器一次可以访问64位。 但是,一次访问一定数量的位究竟意味着什么呢?
3回复

具有32 MB RAM的PC的“最后”字节的8位十六进制地址是什么

我正在读一本关于汇编的书; 琼斯和巴特利特出版商80x86汇编简介 作者给出了练习,但没有答案。 显然,在继续之前,我想确保我完全理解本章的概念。 donc, 具有32 MB RAM的PC的“最后”字节的8位十六进制数字地址是什么 这是我的解决方案: 1)转换为
2回复

mips是否具有32位地址和32位指令?

我知道32位MIPS指令和存储器寄存器是...很好的32位...,并且PC在指令寄存器中计算了该指令的地址。 我的问题是:32位地址是否附加到32位指令上? 忽略这些都是零的事实... 0x00000000(地址)是否与0x00000000(指令)串联? 例如,R-Typ
3回复

是什么设置了处理器可以访问的RAM上限?

按照这种从在IIT教授讲座,一个8位的8085处理器将具有可配对以访问16个地址的8个寄存器。 他通过告诉我们程序计数器和堆栈指针寄存器是16位来实现它可以访问16位地址的事实。 他还继续告诉我们,数据总线是8位,而地址总线是16位。 结果是不是意味着32位处理器将能够访问64位地址?
5回复

处理器和虚拟/物理地址

简而言之,据我了解内存管理,处理器生成虚拟地址。 MMU使用每个进程的地址表将这些地址转换为相应的物理地址(必要时在它们之间具有TLB和页面错误)。 我的问题是处理器是否总是产生虚拟地址? 就地址空间(用户/内核),处理器模式(用户/内核)和上下文(进程/系统)而言,处理器何时始终产生
1回复

为什么处理器只读取对齐的地址

所以我读了几篇有关内存对齐的文章(以及关于StackOverflow的一些问题),并且我理解了为什么这样的结构: 将有填充。 同样很明显,如果处理器只能从对齐的偏移量读取数据,则从未对齐的内存中获取数据的速度会变慢。 但是,为什么处理器只能从对齐的内存中读取数据? 为什么它不能