首先引用两段百度百科中关于补码的说法:
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
对于整数(定点数)的情况,求给定数值的补码分以下两种情况:
(1)正整数的补码,是其二进制表示,与原码相同。
(2)负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
上面这两段话的意思,大部分还是比较清楚准确的。
关键点有:
- (1)补码,用于表示「有符号数(signed number)」,也就是用来区分非负数和负数。
- (2)在计算机系统中,数值一律使用补码来表示和存储。
- (3)正整数的补码和它的原码相同,而负整数的补码则需要取反、加1。