我上网查了以下内容:
N位二进制补码所能表示的十进制数的范围是-2^(N-1)~+2^(N-1)-1
N位二进制原码和反码所能表示的十进制数的范围是-2^(N-1)-1~+2^(N-1)-1
我们现在来做个测试,用4位二进制来表示-2和-6,并用补码的形式来求和。
-2的补码为1110,-6的补码为1010,按理说,4位二进制的补码的表示范围为-8~7,可是1110与1010相加后的结果是11000,把进位丢弃,则为1000,数值位为000,结果并不是-8,但若是+2(0010)和+5(0101)相加,结果为0111是正确的,同样是边界,为何结果不同?
我询问了老师,他给出的回答是:我们一般不考虑边界问题,(即绕过,避免),计算机一般会把这个1000直接当成-8。
然后我综合了别人的意见,觉得用-2^(N-1)-1~+2^(N-1)-1,来理解补码的表示范围可能是会更好懂的。
欢迎各位提出自己的见解。
