二进制加法:
二进制加法从低位开始逢二进1,比如29+5=34换成2进制就是11101+00101=100010;
二进制减法:
对于计算机来说它是只能进行加法运算不能做减法运算的,所以减去一个二进制数就等于加上这个数的负数。
原码:通过最高位作为符号位的方法来表示一个二进制数的正负,0表示正1表示负;比如
10001和-10001的八位二进制原码分别为00010001和10010001
反码:正数的反码和原码相同,负数的反码保持符号位不变,其余各位取反即0变1,1变0;比如原码00010001和10010001的反码分别为00010001和11101110
补码:正数的补码和源码相同,负数的补码为先取其反码再在最低位加1;比如原码00010001和10010001的补码为00010001和11101111
ps:正数的原码,反码,补码都一样,计算机中都是用补码进行计算
则计算10101-00101(换成十进制是21-5)的步骤就为:先将两个二进制数转换为8位二进制补码的形式
00010101和11111011,然后再将两数相加,如图一:
因为符号位进位了所以要舍去进位,最终结果为00010000,注意这个结果是补码,还要转换回去,因为这个补码是正数所以原码还是他自己即00010000换成十进制为16
为什么补码的最高位进位可以舍去?
这个和补码的作用有关,他就是为了解决二进制减法符号位进位的问题而出现的。不需要过于纠结其中原理