我不太明白,如果有人能提供例子来帮助我更好地理解。我将不胜感激。
在使用2的补码和32位int
的系统上,它可以保存的值范围是-2147483648到2147483647。
如果你要否定最小的int
,即-2147483648,结果将是2147483648,这超出了范围。
符号和幅度系统不能以这种方式溢出,因为1位被单独保留为符号位,而其余的位(假设没有填充)是值。
符号大小格式无法获得溢出。取负数只是将符号颠倒,并保持大小不变。
在2的补码中,如果你试图取最大的负值,你会得到一个溢出,因为负值总是比正值多1个。例如,在8位中,取值范围是-128到127。因为没有128,如果你试图取-128的负值,你会得到一个溢出。
因为2的补数没有负零——它们只有一个零,所以负数的数量大于正数的数量。
如果你取最小负数,你将得到一个不能被表示为相同长度的正数的数。