我正在阅读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 =?
这些是“打包”的词。也许我需要阅读更多关于它们的信息。还是有人能解释一下吗
答案 0 :(得分:2)
我相信逻辑是这样的:
rA
包含值- 1234 00 00 09
。M
包含值- 2000 0150 00
。M
减去rA
得到766,014,991或+ 0766 0149 91
。可替换地,
rA
包含值- 04D2 00 00 09
。M
包含值- 07D0 0096 00
。M
减去rA
得到0x2FE0095F7,或+ 02FE 0095 F7
,或十进制,+ 0766 0149 247
[ sic ]。< / LI>
因此,在不知道这个特定MIX机器的二进制/小数的情况下,我们无法确定结果的低位字节是什么。它保证是-9
的单字节表示,但这是91
十进制还是0xF7
二进制是不可知的。
我现在没有TAOCP在我面前检查,但我相信这个逻辑是对?
令人困惑的一个很好的解释。