补码的规则可以表示为:除了最高位以外,第 N 位如果为 1 ,对应的值是 2 的 N 次方(注意 N 的取值从 0 开始)。如果最高位是第 M 位,那么最高位的值是 2 的 M 次方的相反数。
例如十六位二进制数 0000 0000 0000 0001 只有第 0 位是 1,对应的值是 2 的 0 次方即 1
十六位二进制数 0000 0000 0000 0011 只有第 0 位和第 1 位是 1,第 0 位对应的值是 2 的 0 次方即 1,第 1 位对应的值是 2 的 1 次方即 2,整个二进制数表示的值就是 1 + 2 即 3
十六位二进制数 1000 0000 0000 0000 只有最高位(第 15 位)是 1,对应的值是 2 的 15 次方的相反数,也就是 -32768
另外 -32768 到 32767 算上 0 的话一共是 65536 个数
这个数是规定的,如果没有这个规定,补码1000 0000 0000 0000的反码是1111 1111 1111 1111,原码是1000 0000 0000 0000,也就是-0,-0和0相等。而0000 0000 0000 0000也是0,所以规定1000 0000 0000 0000表示-2^15=-32768
16位二进制数的范围如下:
0000 0000 0000 0000 ~ 1111 1111 1111 1111
算成十进制就是 0~65535
把最高位看做+、-号,其余十五位的范围,就是0~32767.
-1 ~-32768
二进制 2^15次方 等于32768
共65536个数 你忽略了0