16位二进制数补码,所表示的是十进制数:-32768~+32767。
最小值,当然是:-32768。
其二进制是:1000 0000 0000 0000B;
其16进制是:8000H。
-------------------------
楼主问的是 16 位数,太多了。下面用四位二进制来说明。
0000、0001、0010...0111、1000、1001...1110、1111,
分别代表十进制:0、1、2......7、8、9......14、15。
位数限定后,这16个数字的变化就是循环的。
把 1111(15),再加一,就是 0000,即十进制的零。
把 0000 (0),再减一,就是 1111,即十进制的15。
可以理解吧?
但是,零,再减一,不就是负一吗?
对。
把 0000 (0),再减一,就是 1111(15),即十进制的-1。
把 1111(15),再减一,就是 1110(14),即十进制的-2。
把 1110(14),再减一,就是 1101(13),即十进制的-3。
……
最后,即有:1000(8),即十进制的-8。
算法:-X,等于 16 - X。
------------------
以此类推,可以得出:
FFFFH(65535),就是-1。
……
8000H(32768),就是-32768。
-------------------------
补码,就是这么规定的:
[ X ]补 = X……………………零和正数的补码,就是该数本身
[ X ]补 = 模 - | X |…………负数的补码,用模,减去该数的绝对值
书上,有这个定义式。
-------------------------
学习补码,千万不要从原码、反码、符号位、求反加一,来入门。
那些,都是骗人的。
应该从定义式开始学。
补码定义式并不难,小学生,都能理解。
-32768 也就是负2的15次方!