在汇编存储空间中,数值都以二进制的形式存储。在二进制中,最高位通常被理解为符号位,0表示正数,1表示负数。在计算机中,使用补码来表示负整数。
补码是计算机中表示负整数的一种方式,它是将一个整数的二进制取反之后再加上1。例如,将3的二进制表示取反,得到11111100,再加上1,得到11111101,这就是-3的补码。
补码表示负数的优点在于,不管是正数还是负数,在计算机内部都是以补码的形式存储和运算的。这使得计算机的运算符号判断变得简单,不需要额外的判断处理。
另外,使用补码可以避免溢出的问题。在计算机内部,运算使用的是补码,可以直接进行二进制的加减运算。在运算结果超出位数限制导致溢出时,由于使用了补码,就不会出现错误的运算结果。
在一个字节(8位)的存储空间中,如何表示一个负数呢?使用补码时,如果符号位(即最高位)为1,那么这个数就是负数。补码求法是将原码的符号位不变,其他位取反后加1。以8位的二进制为例,如果原码是10000001,需要进行反码运算,得到11111110,再加上1,得到11111111,这就是-1的补码。当运算中出现类似于-1、-2、-3等负数时,在存储空间中都会表示为FFH、FEH、FDH等。
计算机的字长是指CPU一次能处理二进制数据的位数。例如,8位的CPU字长最大能处理的数据为2的8次方,即256。在计算机中,使用不同位数的二进制来表示数值,不同的二进制位数也限制了数值的表示范围。
使用8位表示数值时,最高位为符号位,因此能表示的最大正数为127,最小负数为-128。但是,使用补码表示时,最小负数可以表示为-127,因为-128没有对应的正数表示。同理,根据8位补码的求法,最大正数为01111111,即127的补码,最小负数为10000001,即-127的补码。