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