一、为什么需要反码?
反码的作用就相当于数学中的负数。
对于小学生来说,会做的算术题是:5-3,但是不会做3-5。于是,我们上初中的时候,数学里就引进了一个新的概念:负数。引入负数之后,本来是减法的运算就可以变成加法来实现:
3-5=3+[-5]=[-2],中括号代表“负数”,“负数”就是我们人为给出的数学术语。
对于计算机来说,会做的算术题是:5+3,但是不会做3-5。于是,我们就在编码里引进了一个新的概念:反码。引入反码之后,本来是减法的运算就可以变成加法来实现:
3-5=3+[-5]=[-2],中括号代表“反码”,“反码”就是我们人为给出的计算机术语。
这里,你一定有一个疑问:为什么计算机只会做5+3,不会做3-5。这是因为在计算机的数字电路中只有加法器,没有所谓的“减法器”。不是说计算机厂商不会设计减法器,因为聪明的人既然发明了方法能够用加法来实现减法操作,那为什么还需要画蛇添足的弄一个减法器?
接着说:那么反码要怎么定义才能实现减法变加法的功能呢?聪明的人想的办法如下:
1.正数的反码保持原码不变:3=[0_0000011]
2.负数除最高位(正负符号位)外,全部取反(0变1,1变0):-5=1_0000101取反&