2

我正在阅读 Knuth 的书 TAOCP。我只是在学习一个简单的寄存器数学运算。还有一个减法运算的例子:

rA before: - | 1234 | 0| 0| 9
Cell 1000: - | 2000 |  150| 0
SUB 1000    
rA after:  + | 766  | 149 | ?

我知道 -1234-(-2000) = 766 但如何 (0 | 0) - 150 = 149 ??

为什么 9 - 0 = ?

这些是“包装”的话。也许我需要阅读更多关于他们的信息。或者谁能​​解释一下?

4

1 回答 1

4

我相信逻辑是这样的:

  • 这个 MIX 机器是十进制机器;每个字节包含两个十进制数字。
  • rA包含值- 1234 00 00 09
  • 内存M包含值- 2000 0150 00
  • M从使用普通十进制算术中减去rA得到 766,014,991,或+ 0766 0149 91.

或者,

  • 这个 MIX 机器是二进制机器;每个字节包含八个二进制位。
  • rA包含值- 04D2 00 00 09
  • M包含值- 07D0 0096 00
  • M从使用普通的十六进制算术中减去rA得到 0x2FE0095F7,或+ 02FE 0095 F7,或十进制,+ 0766 0149 247[原文如此]。

因此,在不知道这个特定 MIX 机器的二进制/十进制的情况下,我们无法确定结果的低位字节是什么。它保证是 的单字节表示-9,但它是91十进制还是0xF7二进制是不可知的。

我现在没有 TAOCP 可以检查,但我相信这个逻辑很好地解释了?让你困惑的问题。

于 2013-06-19T23:07:35.270 回答