百度词条:
计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 [1] 。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 [2] 。
原码:
符号位0表示正数,符号位1表示负数
正数原码 = 0 + 正数绝对值
负数原码 = 1 + 负数绝对值
反码:
正数的反码不变,负数原码符号位的1不变,绝对值部分按位取反
补码:
正数的补码等于原码,负数的补码等于负数的反码加1
例如:
+20的原码:00010100
+20的反码:00010100
-20的原码:10010100
-20的反码:11101011
补码:
正数补码 = 正数反码 = 正数原码
负数补码 = 负数反码符号位的1不变,绝对值部分+1
例如:
+20原码:00010100
+20反码:00010100
+20补码:00010100
-20原码:10010100
-20反码:11101011
-20补码:11101100
计算机在执行有负数参与的计算时,就必须用补码。原因是计算机内部只有加法器,没有减法器,换言之,计算机只能进行加法运算,不能进行减法运算,所以,在计算减法运算时,需要通过转换成加上“减数相反数”的形式进行运算,因此计算机中引入了补码运算。
具体计算:
取一个数字的补码表示数:
1.