Assembly 两个';十六进制的s补码运算

Assembly 两个';十六进制的s补码运算,assembly,hex,twos-complement,Assembly,Hex,Twos Complement,我很难理解课本中关于学习汇编语言的部分内容。它开始介绍所有在计算机中表示数据的方法,并且im已经涵盖了计算机中有符号和无符号的数字,其中有符号的数字是负数或正数。我的书用十六进制做二的补码运算,这里根本没有转换成二进制,我在网上看到的只是用二进制做的。我的书中说,首先将十六进制数表示为无符号,然后将该十六进制数减去10000个以16为基数的数字,得到字长表示法(假设100000000个以16为基数的数字将得到一个双字)(以十六进制表示,减去的数字是1,后跟表示法长度中的0) 在阅读之后,并试图理

我很难理解课本中关于学习汇编语言的部分内容。它开始介绍所有在计算机中表示数据的方法,并且im已经涵盖了计算机中有符号和无符号的数字,其中有符号的数字是负数或正数。我的书用十六进制做二的补码运算,这里根本没有转换成二进制,我在网上看到的只是用二进制做的。我的书中说,首先将十六进制数表示为无符号,然后将该十六进制数减去10000个以16为基数的数字,得到字长表示法(假设100000000个以16为基数的数字将得到一个双字)(以十六进制表示,减去的数字是1,后跟表示法长度中的0)

在阅读之后,并试图理解它,它给了我一个例子,例子想要2的补码-76。所以它将其转换为无符号,也就是4C,然后从10000(这里的字长)中减去4C。因此,我们:

10000
  -4C
_____
但是我的书说你不能从0中减去C,这是真的,因为C是12,你不能从0中减去12。所以它把1推到左边,然后离开FFF。为什么是FFF?我以为F是15,不是0。那么剩下的0怎么变成F呢

现在我们有:

FFF 10
 -4  C
______
在这一切之后,它说: 10基数16减去C基数16=16基数10减去12基数10=4。 什么?以10为基数16是可以的,但它如何变成16呢?我知道C是12,你不能做10减12而不得到一个负数,但是为什么10变为16呢? 最后它说F基数16减去4=15基数10-4基数10=11基数10=B基数16 这是有道理的,但不是10变成16。有人能用十六进制来解释这一点吗?这里发生了什么

-丹

这:


只不过是一句台词

要记住的是,你在16进制中工作。所以,以10为基数16表示的10的命名法=1*16^1+0*16^0=16。基数16中的C为12(A=10,B=11,C=12,D=13,E=14,F=15)。So 10(基数16)-C=(在基数10术语中)16-12=4(在基数16术语和基数10术语中)

现在,考虑一下你的“借用”问题,如果你有以下10个基数的减法问题:

 1000
 -  8
 -----
  992
你把它改写成

 99 10 
 -   8
 ------
   992
自1000=9*10^2+9*10^1+10(900+90+10)

这里的F和9在需要借钱做减法时的动作一样


在你的情况下,10000=16^4=FFF10=15*16^3+15*16^2+15*16^1+16

非常感谢你,这真的把一切都弄清楚了。再次感谢:)
 99 10 
 -   8
 ------
   992