【问题标题】:what is the most negative fraction that can be represented by a n bit binary number in 2's complement?可以用 2 的补码中的 n 位二进制数表示的最负分数是多少?
【发布时间】:2016-09-12 03:06:04
【问题描述】:

我正在阅读 Carl Hamacher 的计算机体系结构。以下几行让我感到困惑

如果我们使用 32 位二进制数来表示 2 的补码中的有符号整数,那么可以表示的值的范围是 -2^31 to 2^31 - 1。 //很好

如果我们假设隐含的二进制点正好在符号位的右侧,则相同的 32 位模式可以解释为范围 -1 to +1 - 2^-31 中的分数。

我不明白分数的范围是如何计算的。我自己计算了正分数的范围,最高分数是2^31-1。但我无法计算最低值(称为-1)。

【问题讨论】:

标签: cpu-architecture twos-complement fixed-point


【解决方案1】:

移动二进制点相当于除以2的幂。因此,如果我们将二进制小数点移动 31 个位置,我们实际上是表示分母为 231 的分数,而分子是未移动的整数。因此范围变为 -231/231 到 (231-1)/231,其中是 -1 到 1-2-31

另一种看待它的方式:在 2 的补码整数表示中,位位置的权重(从左到右)为 -231、230、229, ..., 20(只有第一个权重是负数)。将二进制点移动到高位(和否定)位之后——“符号位”——使得权重为 -20, 2-1, 2-2, ..., 2-31(同样,只有第一个权重是负数)。同样,很明显“最负”是 100…0,其值为 -1,即唯一一位的权重

【讨论】:

  • 非常感谢。你的第一个理由就足够了。你的第二个原因教会了我另一件事。以前为了计算 1000 在 2 的补码中的值,我曾经找到 1000 的 2 的补码(这将是一个正数) =+8 。然后我会翻转符号以获得 1000 的值。花了这么长时间。但是现在我知道如何通过为最重要的位分配负权重来直接找到它。谢谢你。
猜你喜欢
  • 2012-11-26
  • 2015-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 1970-01-01
  • 2021-04-20
  • 1970-01-01
相关资源
最近更新 更多