📅  最后修改于: 2023-12-03 15:27:52.952000             🧑  作者: Mango
计算机内部使用的是二进制数字来表示正负数,但是二进制数是没有符号的,所以需要补码来表示正负数。
原码是二进制表示法中最简单的一种,其中最高位表示符号,0表示正数,1表示负数,其余位表示数值大小。但是原码有一个很大的问题,就是加减法运算很复杂,需要先判断符号位,再进行运算。
反码是为了解决原码的加减法问题而出现的。正数的反码与原码相同,负数的反码则是在原码的基础上,符号位不变,其他位全部取反。
例如:
由此可知,反码有一个很大的问题,就是存在+0和-0两个数,这显然会影响到后面的运算。
由于反码存在+0和-0,所以需要一个新的表示方法,那就是补码。计算机中,负数使用补码表示,正数的原码和补码相同。补码的计算方法如下:
例如:
补码的好处在于,在加减法运算时,无需再判断符号位,只需要进行二进制运算,最后得到的结果再转化为原码即可。
反向补码是指对于一个补码进行逆运算的结果。例如对于-7的补码11111001,进行逆运算可以得到对应的反向补码00000111。
反向补码的计算方法如下:
与补码不同的是,反向补码是用来进行除法运算的。在计算机中,除法运算并不是用除数去除以被除数,而是用被除数去除以除数的反向补码。
例如:计算-7/3的结果,首先将-7的补码11111001转化为反向补码00000111,然后将除数3转化为反向补码11111101,进行除法运算得到商的反向补码11111011,再将反向补码11111011转化为原码10000101,所以-7/3的结果为-2。
反向补码并不常用,所以在此不作过多介绍。
补码是计算机内部表示正负数的一种方式,优点是简化了加减法运算,不需要判断符号位。反向补码则是用来进行除法运算的,计算机中使用不多,在此不作过多介绍。