关于汇编的有无符号数问题

2024-11-21 23:05:02
推荐回答(2个)
回答1:

-128=1111 1111
127=0111 1111
超过127 127+2=1000 0001=-1

其实汇编和你1.中说的一样。。小于-128的数字不能拿2字节的寄存器存放了。
他就相当于 这个2字节的寄存器。能存放-128~255的数据。
你当他是有符号数时就是-128~127.无符号0~255
超过这个界限,就会溢出、
还有补码的问题。计算机如果要存放一个负数。那么会存放他的补码、
所以你遇到一个二进制的数字,没有上下文联系,是没有办法判断是否为有符号数和无符号数、。
如果还有不懂可以追问,在线等回复。、

回答2:

1、这跟你所要表示的数位数有关。
2、al,是八位寄存器,只能表示2的8次方个数值,即256个数值(0~255)。
3、ax,是16位寄存器,可以表示2的16次方个数值,即65536个数值(0~65535)。
eax是32位寄存器,可以表示2的32次方个数值,
rax是64位寄存器,可以表示2的64次方个数值,
4、为了表示正数、零、负数,负数个数是寄存器所能表示的数值的一半(如:256/2=128),
正数个数是寄存器所能表示的数值的一半减一。
rax是64位寄存器,负数个数=2的64次方个(-1 ~ -2的64次-1)。
5、寄存器表示负数时,其最高位为1。
6、这种表示方法计算机硬件易于实现。
7、假如al=0,al-1后al寄存器变成0FFH(即负1),