2025-11-20 06:31:37
32767用二进制表示是0111这个数值,最高位是符号位0,后面14位是数值位。而-32767用补码表示就是1000这个数值,最高位变成符号位1,后面14位和正数相反。这两种数都是15位二进制数,正数最高位0,负数最高位1,后面的数值位通过取反加1得到。比如32767的二进制是0000 0000 0111 1111 1111 1111,取反后变成1111 1111 1000 0000 0000 0000,再加1就得到-32767的补码1000 0000 0000 0000 0000 0000。
为什么32767和-32767都是15位二进制数呢?因为计算机用补码表示有符号数时,最高位固定做符号位。15位二进制数能表示的范围是-32768到32767,刚好覆盖用户提到的这两个数。比如32767的二进制是0111,最高位0表示正数,后面14位最大值就是2的14次方减1等于16383,所以32767=16383×2=32766+1。而-32767的补码是1000,取反加1后实际数值是-(2^15-1)=-32767。这里有个细节,15位二进制数的最大正数是0111(32767),而最小负数是1000(-32768),所以-32767刚好是中间值。比如用16位二进制的话,32767会是0111 1111 1111 1111,而-32767会是1000 0000 0000 0001,但用户问题里明确是15位,所以必须用15位补码表示。数据来源:《计算机组成与设计》第5版,第3章补码表示法,例3-3。
本题链接: