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?
我想答案是肯定的,但我缺乏强有力的论据支持。有什么提示吗?
正的 IEEE 754 二进制 32 数字映射到递增的整数。
\n\n然而:
\n\nIEEE 754 表示形式是符号数值,因此负的 32 位二进制数映射为递减的整数。如果映射到 unsigned int32,则负浮点数映射到正浮点数之上(如果要对浮点数进行位运算,也可以将它们映射到 unsigned int32)。
IEEE 754 有+0.0和-0.0,对于 \xe2\x80\x9cequal\xe2\x80\x9d 的某些浮点定义是相等的,但映射到非常不同的整数(分别为0和,如果映射到有符号的 32 位 int 类型)INT_MIN。
IEEE 754 有多种 NaN 表示形式,它们映射到不同的整数。
这假设浮点和整数表示具有相同的字节顺序。给予它们相同的字节序有很多优点,但举个例子,ARM 历史上一直在使用字节序做奇怪的事情,所以我应该指出这一点。