所以我正在尝试从 Randall Hyde 的书中学习汇编语言:汇编语言的艺术,我已经完成了第一章的学习,现在我正在尝试做练习。我有以下问题:如何将二进制值(正或负)转换为相反符号的十六进制值。是的,我知道如何用二进制表示从 0 到 15 的数字,而且 10 是 f 等等关于......我遇到的问题如下......我得到了这个数字:1001 1001,我必须将其转换为相反的值。到目前为止,我已经使用了二进制补码并获得了这个:
1001 1001 ----->shifting bits -----> 0110 0110
add 1 -----> 0110 0111
我应该得到与第一个数字相反的结果。相反,当我计算结果的值时,我得到了这个:
1001 1001 = 2^0+2^3+2^4+2^7 = 1+8+16+128 = 153 (which in my opinion is fine...)
转换数字后,我得到了这个:
0110 0111= 2^0+2^1+2^2+2^5+2^6 = 1+2+4+32+64 = -103
我究竟做错了什么 ?