补码底层逻辑探讨
在计算机里面以二进制进行存储,二进制并不能区分正负数
为了处理负数,人们想了很多办法
1.原码
首先,很直观的区分方法就是设置一个flag
在二进制前面加一个符号位,0是正、1是负
但是在电路里面处理这样的信号却很复杂(主要是符号位增加了许多要考虑的事情,MUX等等)
2.补码
正数的补码和原码一样,负数的补码要取反加一,决定了最高位是0的为正数,是1为负数
由于x和x的补码做和运算等于0
这样a - b就可以当成a + (-b),可以将正负、加减统一为和运算,在电路中一个二进制加法器就可以了(有种相对论化繁为简、大统一的感觉)