整数和浮点数的二进制表示:是否存在单调递增的一一对应关系?

joa*_*ofe 2 floating-point binary integer

在处理遗留系统时,我需要使用仅接受双精度数作为输入的函数来存储整数,我遇到了以下问题。我们得到一个二进制数,例如:

00111111 11000000 00000000 00000000

如果我们将其表示为整数,则该数字为 1069547520。如果我们将其表示为 IEEE 754 浮点数,则为 1.5。很容易看出整数和 IEEE 754 浮点数之间存在一一对应的关系。我的问题如下。给定两个整数 a 和 b,以及它们对应的 IEEE 754 浮点对应项 A 和 B,a > b 是否意味着 A > B?

我想答案是肯定的,但我缺乏强有力的论据支持。有什么提示吗?

Pas*_*uoq 5

正的 IEEE 754 二进制 32 数字映射到递增的整数。

\n\n

然而:

\n\n
    \n
  • IEEE 754 表示形式是符号数值,因此负的 32 位二进制数映射为递减的整数。如果映射到 unsigned int32,则负浮点数映射到正浮点数之上(如果要对浮点数进行位运算,也可以将它们映射到 unsigned int32)。

  • \n
  • IEEE 754 有+0.0-0.0,对于 \xe2\x80\x9cequal\xe2\x80\x9d 的某些浮点定义是相等的,但映射到非常不同的整数(分别为0和,如果映射到有符号的 32 位 int 类型)INT_MIN

  • \n
  • IEEE 754 有多种 NaN 表示形式,它们映射到不同的整数。

  • \n
  • 这假设浮点和整数表示具有相同的字节顺序。给予它们相同的字节序有很多优点,但举个例子,ARM 历史上一直在使用字节序做奇怪的事情,所以我应该指出这一点。

  • \n
\n