Floating point 整数和浮点数的二进制表示:是否存在单调递增的一对一对应关系?
在处理一个遗留系统时,我需要使用一个只接受double作为输入的函数来存储整数,我遇到了以下问题。我们得到一个二进制数,例如: 00111111 110000000000000000000000 如果我们将其表示为整数,则该数字为1069547520。如果我们将其表示为IEEE 754浮点数,则为1.5。很容易看出,整数和IEEE 754浮点数之间存在一对一的对应关系。我的问题如下。给定两个整数a和b,以及它们对应的IEEE 754浮点对应项a和b,a>b是否意味着a>bFloating point 整数和浮点数的二进制表示:是否存在单调递增的一对一对应关系?,floating-point,binary,integer,Floating Point,Binary,Integer,在处理一个遗留系统时,我需要使用一个只接受double作为输入的函数来存储整数,我遇到了以下问题。我们得到一个二进制数,例如: 00111111 110000000000000000000000 如果我们将其表示为整数,则该数字为1069547520。如果我们将其表示为IEEE 754浮点数,则为1.5。很容易看出,整数和IEEE 754浮点数之间存在一对一的对应关系。我的问题如下。给定两个整数a和b,以及它们对应的IEEE 754浮点对应项a和b,a>b是否意味着a>b 我想答案是肯定的,但我
我想答案是肯定的,但我缺乏有力的论据支持。有什么提示吗?正IEEE 754二进制32数字映射为递增整数 然而:
- IEEE 754表示为符号幅度,因此负二进制32数字映射为递减整数。如果映射到无符号int32s,则负浮点数映射到正浮点数之上(如果要对浮点数进行位旋转,也可以将它们映射到无符号int32s)
- IEEE 754具有
和+0.0
,对于某些浮点定义的“equal”是相等的,但映射到非常不同的整数(分别是-0.0
,如果映射到有符号的32位整数类型,0
)int\u MIN
- IEEE 754有几种NaN表示,它们映射到不同的整数
- 这假设浮点和整数表示具有相同的endianness。给他们相同的endianness有很多好处,但举个例子,ARM在历史上一直用endianness做奇怪的事情,所以我应该指出这一点
- IEEE 754表示为符号幅度,因此负二进制32数字映射为递减整数。如果映射到无符号int32s,则负浮点数映射到正浮点数之上(如果要对浮点数进行位旋转,也可以将它们映射到无符号int32s)
- IEEE 754具有
和+0.0
,对于某些浮点定义的“equal”是相等的,但映射到非常不同的整数(分别是-0.0
,如果映射到有符号的32位整数类型,0
)int\u MIN
- IEEE 754有几种NaN表示,它们映射到不同的整数
- 这假设浮点和整数表示具有相同的endianness。给他们相同的endianness有很多好处,但举个例子,ARM在历史上一直用endianness做奇怪的事情,所以我应该指出这一点