mag*_*age 2 binary x86 twos-complement
我从《装配艺术》一书中复制了这句话:
\n\n\n在二\xe2\x80\x99补码系统中,数字的HO位是符号位。如果HO位为零,则该数为正;如果 HO 位为 1,则该数字为负数。例子:
\n对于 16 位数字:
\n\n
8000h为负,因为 HO 位为 1。\n
100h为正,因为 HO 位为零。\n
7FFFh是积极的。\n
0FFFFh是负数。\n
0FFFh是积极的。
我不明白最后两个例子。如果将这两个示例转换为二进制,则会得到0000 1111 1111 1111 1111第一个和0000 1111 1111 1111第二个示例。为什么前者是负数,后者是正数?在我看来,两者的最高位都是 0,因此两者都应该是正数。
0FFFFH 上前导 0 的原因是为了向汇编器/编译器提示 F 是数字的一部分。并非所有汇编器都需要这个。
所以负数实际上是FFFFh,所以1111 1111 1111 1111,那么就是负数。
Computer-programming-forum.com/46-asm/1b99282efbac3bcf.htm