- 1、原码
顾名思义,原码就是十进制数直接转换成二进制之后直接形成的二进制编码。
- 2、补码
正数的补码是本身,负数的补码是其反码加一。
- 3、反码
顾名思义:正数的反码是本身,负数的反码是其除符号位之外的所有位按位取反的结果。
符号位:非负数的符号位为 \(0\),负数为 \(1\)。
为何有补码
在计算机里为了简化运算,只有加法,没有减法,而使加后减少的方式只有溢出,所以要用加负数的形式溢出,实现减法。(计算时,包括符号位)。
如果 \(x\) 是一个非负整数,那么 \(-x\) 加上 \(x\) 就等于 \(0\),对于计算机,如果想实现减这一操作,仅有溢出一条路。如果 \(-x\) 为 \(x\) 取反,那么二进制下 \(x + (-x) = 111\dots11\),即全 \(1\),而 \(0\) 的二进制为 \(000\dots0\),这时如果给全 \(1\) 加 \(1\),那么就会溢出,剩余为全 \(0\),即 \(0\)。那么 \(-x\) 就应该是 \(x\) 取反加 \(1\),即: -x = ~x + 1
,而这就是补码。