这样规定的好处是,做加减法运算,不需要判断正负。
比如,以8位二进制数为例:
5,0001,0001B
-2,0000,0010B(2)-〉1111,1101B(反)-〉1111,1110B(加1),-2的二进制表示(补码)
写错了,前面5应该是17
17十(-2)
0001,0001B
1111,1110B
-----------
0000,1111B
=15D
直接逐位相加即可。
如果简单高位置1表示负数,做加法前,要先取出各个数的最高位,判断是不是1,是1,是负数,加其实是减,调用减法命令做加法。
就很麻烦,很慢。
(-2)-17:
1111,1110
0001,0001
----------
1110,1101B,逐位减。
对应数,
1110,1101-1=1110,1100
逐位反:0001,0011B=16十2十1=19,结果-19,直接得到,无需计算前判断正负。