Assembly 最小有符号字节?

Assembly 最小有符号字节?,assembly,x86,Assembly,X86,在kip irvine的《x86处理器汇编语言》一书中,他写道 val4-SBYTE-128;最小有符号字节。 var3-SBYTE-127;最大有符号字节 我认为第一位是符号位。那么最小的字节不应该是-127吗 任何帮助都将不胜感激 In,n位字的范围是[-(2n-1),2n-1-1]。因此,对于一个8位的sbyte,它是[-128127] 例如,最小8位有符号值(sbyte)为10000000二进制。在2的补码中,在翻转所有位并添加一位后,x的表示形式是-x的表示形式: 10000000

在kip irvine的《x86处理器汇编语言》一书中,他写道

val4-SBYTE-128;最小有符号字节。 var3-SBYTE-127;最大有符号字节

我认为第一位是符号位。那么最小的字节不应该是-127吗

任何帮助都将不胜感激

In,n位字的范围是[-(2n-1),2n-1-1]。因此,对于一个8位的
sbyte
,它是[-128127]

例如,最小8位有符号值(
sbyte
)为10000000二进制。在2的补码中,在翻转所有位并添加一位后,x的表示形式是-x的表示形式:

 10000000     =  x
 01111111 + 1 = -x
010000000     = -x = 128

            x = -128

这样看。在二的补码表示法中,每个位的值是其零基位置的2次方,符号位除外,符号位为负数

让我们把它说清楚。假设您有一个8位数字
abcdefgh
。每个字母
a..h
对应一个位,其值可以是零或一。该位序列的整数值为:

(-128)a + 64b + 32c + 16d + 8e + 4f + 2g + h

所以最小的字节大小的整数是在
a
位置有1,在其他位置有0的整数。那是-128。最大的一个是在
a
位置为0,在其他位置为1的一个。数一数,它是127。

你可能在想所谓的符号/幅度表示法,符号位只是将其余的乘以-1,或者不乘以。一的补码,其中符号位的位值为
-(2^(n-1)-1)
,其范围也仅为
[-127..127]
,但x86和所有其他现代机器使用2的补码。