为什么符号位为零时浮点数为正?

Why are floating point numbers positive when the sign bit is zero?

我觉得这个选择 0 = positive 与 0 = false 的布尔值有点相反。

我知道正反面不是假的,但是两组对映项(真假,正负)足够相关,我觉得这个设计选择很奇怪。

假设我们遵循您的逻辑,使正数的符号位为 1,负数的符号位为 0。让我们以使用 4 位数字的两种情况为例:

  1. 在传统的符号位中,零表示为0000。这里的符号位与正数一到七相同。您是否要使表示中的零为 1000 以匹配系统中其他正整数的符号位?这意味着 0000 将代表其他一些负数……这很令人困惑。我们需要两个心智模型来理解有符号数和无符号数。

  2. 假设我们通过将其保留为 0000 来避免零问题,但我们将第一个问题表示为 1001(甚至 1000)。这意味着如果我们做了 1+1,我们会做 1001 + 1001,这等于 0010(或 1000 + 1000 = 0000),因为我们删除了最后一个进位。因此,在您的新表示中,这意味着 1+1 现在等于负数。这没有意义。

正数的符号位为 0 而负数为 1 的美妙之处在于 a) 如果您将任意两个数字相加,只要它们的答案在它们的范围内(4 位数字的范围为 -8到 7),加法将正确计算,并且 b) 我们通常的零心智模型 0000 仍然保持有符号数和无符号数之间的一致性。