gpt4 book ai didi

floating-point - 整数和 float 的二进制表示 : is there a monotonically increasing one-to-one correspondence?

转载 作者:行者123 更新时间:2023-12-02 21:29:34 27 4
gpt4 key购买 nike

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

00111111 11000000 00000000 00000000

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

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

最佳答案

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

但是:

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

  • IEEE 754 有 +0.0-0.0,它们对于“等于”的某些浮点定义是相等的,但映射到非常不同的整数(分别0,如果映射到有符号 32 位 int 类型,则为 INT_MIN)。

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

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

关于floating-point - 整数和 float 的二进制表示 : is there a monotonically increasing one-to-one correspondence?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22617550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com