为什么浮动总是32位?

时间:2015-02-23 10:47:13

标签: floating-point

当我的朋友问我为什么整数大小从架构变为架构时的问题?我告诉我的朋友,整数被组装指令所取代,即 MOVW(移动单词)字大小为16位(在某些公司中)和32位(在其他公司中),以便&#39 ;为什么它从建筑变为建筑。

上述说明是否正确? 请告诉我,如果我错了。

另一个问题是,

为什么大小浮点数总是32位而不管架构? 它是由硬件处理的吗?

3 个答案:

答案 0 :(得分:2)

因为IEEE-754标准详细描述了32位和64位浮点数,直到最后一位。我不知道C定义要求IEEE-754(可能不是),但肯定任何认真的数学程序员都期望IEEE-754。

与int:int的区别被定义为最有效的数字类型(大多数是寄存器的大小)。由于向后兼容性,一些编译器似乎更喜欢64位机器上的32位整数。但浮点大小从不受兼容性问题的影响。

答案 1 :(得分:2)

目前的浮点格式协议水平是IEEE 754标准的结果,正如其他人所指出的那样。

在该标准占主导地位之前,没有这样的协议。具体来说,Cray XMP计算机的64位浮点类型是它们的单精度浮点数。

答案 2 :(得分:1)

64位计算机上的整数仍然可以是32位。它取决于编译器,而不是机器。由于内存地址大小为64位,因此'int指针'大小可以在64位机器上更改为64位。这意味着你的“论证”无效。

浮点数仍然是浮点数:通常我们说它是32位,但每个人都可以自由地偏离它。我认为这与我们通常适用的处理器架构标准有关。