二进制快速排序起始位位置



我正在以下位置阅读有关二进制快速排序的内容:

http://books.google.co.in/books?id=hyvdUQUmf2UC&pg=PA426&lpg=PA426&dq=robert+sedwick+binary+quick+sort&source=bl&ots=kAYK3_LkCg&sig=BjKk4g68h8xG87Vx2vS_TiUKDQY&hl=en&sa=X&ei=uuKzUq4-iY-tB7nZgdgL&ved=0CEYQ6AEwBA#v=一页&q=robert%20sedwick%20binary%20quick%20sort&f=错误

文本片段:

对于由随机位组成的全字密钥,程序10.1中的起点应该是字的最左边的位,或位0。通常,应该使用的起点直接取决于应用程序、机器中每个字的位数以及整数和负数的机器表示。对于图10.2和10.3中的一个字母的5位密钥,32位机器上的起点将是位27。

我对以上文本的问题是:

  • 为什么作者得出结论,对于5位密钥,32位机器上的起点应该是位27

文本摘录不完整,令人困惑。

文本似乎假定机器字中的位采用大端序位编号。在big-endian位编号中,位0是一个字中最左边的位。提示来自短语">单词最左边的位,或位0。">

因此,对于保存在32位寄存器中的5位数字,该数字的位0将保存在机器字的位27中,对于大端序编号字中的右对齐值。

0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3   machine word
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1   bit numbers
+-----------------------------------------------------+---------+
|x x x x x x x x x x x x x x x x x x x x x x x x x x x|0 1 2 3 4|  char to sort
+-----------------------------------------------------+---------+

如今,大端字节编号在大多数地方并不常见。IBMPOWER/PPowerPC仍然使用big-endian编号,像TMS9900/TMS99000系列这样的旧big-endia体系结构也是如此。

最新更新