我无法理解我关于学习汇编语言的教科书的一部分。它开始介绍在计算机中表示数据的所有方法,并且在它涵盖计算机中的有符号和无符号数的地方,其中有符号数是负数或正数。我的书以十六进制进行二进制补码运算,这里根本没有转换为二进制,而我在网上看到的只是用二进制进行。我的书说你首先将你的十六进制数表示为无符号数,然后将这个十六进制数减去 10000 base 16 以获得字长表示(假设 100000000 base 16 会得到一个双字)(你减去的数字是十六进制,1 后跟表示长度中 0 的数量)。
在阅读并尝试理解它之后,它给了我一个例子,而例子需要 -76 的 2 补码。因此它将它转换为无符号数,即 4C,然后从 10000(此处为字长)中减去 4C。所以我们有:
10000
-4C
_____
但是我的书说你不能从 0 中减去 C,这是真的,因为 C 是 12,你不能从 0 中减去 12。所以它在左边的路上把 1 推到一边,然后离开 FFF。为什么选择 FFF?我以为F是15,而不是0。那么剩下的0怎么变成F呢?
现在我们有:
FFF 10
-4 C
______
毕竟,它说:10 base 16 - C base 16 = 16 base 10 - 12 base 10 = 4。什么?10 base 16 没问题,但是怎么变成 16 呢?我知道 C 是 12,你不能做 10 减去 12 而不得到负数,但是为什么 10 会变成 16?最后它说 F base 16 - 4 = 15 base 10 - 4 base 10 = 11 base 10 = B base 16 这是有道理的,但不是 10 变成 16。有人可以用十六进制来解释这是怎么回事这里。
-担
这个:
________
只是一条线