我正在阅读Carl Hamacher的计算机架构。以下几行令我困惑
如果我们使用32位二进制数来表示2的补码中的有符号整数,那么可以表示的值范围是
-2^31 to 2^31 - 1
。 //很好如果我们假设隐含的二进制点恰好位于符号位的右侧,那么相同的32位模式可以解释为
-1 to +1 - 2^-31
范围内的分数。
我不明白如何计算该分数的范围。我自己计算了正分数的范围,最高分数为2^31-1
。但我无法计算最低值(提到-1)。
答案 0 :(得分:2)
转换二进制点等于除以2的幂。因此,如果我们将二元点移位31个位置,我们有效地表示其分母为2 31 的分数,并且分子分子是未移位的整数。因此,范围变为-2 31 / 2 31 至(2 31 -1)/ 2 31 ,其中是-1到1-2 -31 。
另一种观察方式:在2的补码整数表示中,位位置具有权重(从左到右)-2 31 ,2 30 ,2 < sup> 29 ,...,2 0 (其中只有第一个重量是负的)。将二进制点移动到高阶(和否定)位之后 - “符号位” - 使得权重-2 0 ,2 -1 , 2 -2 ,...,2 -31 (同样,只有第一个重量是负的)。同样,很明显,“最负面的”是100 ... 0,其值为-1,仅为一位的权重