说明:二进制原码、反码和补码都是针对有符号数(有符号数就是有正数和负数)的,无符号数(只有非负数)没有原码、反码和补码。在这篇文章,我将不会讲原码、反码和补码的由来和作用,我只会讲它们的运用
- 原码
定义:
原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
实质:
用二进制表示有符号十进制数字
举例:
十进制数字 | 原码 |
---|---|
3 | 0000 0011 |
-3 | 1000 0001 |
- 反码
定义:是用来由原码求补码或者由补码求原码的过渡码。
实质:对于负数,把除符号位其余每位都按位取反;正数的反码是其本身(也就是它的原码)
举例:
二进制原码 | 二进制反码 |
---|---|
0000 0011 | 0000 0011 |
0000 1101 | 0000 1101 |
1111 0110 | 1000 1001 |
1001 0101 | 1110 1010 |
- 补码
定义:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。
实质:正数的补码是其本身(也就是它的原码),负数的补码是在其反码的基础上在其最末端也就是最靠右的那一位+1。
举例:
十进制数字 | 二进制原码 | 二进制反码 | 二进制补码 | 说明 |
---|---|---|---|---|
-5 | 1000 0101 | 1111 1010 | 1111 1011 | 负数的补码是反码+1 |
-2 | 1000 0010 | 1111 1101 | 1111 1110 | 负数的补码是反码+1 |
4 | 0000 0100 | 0111 1011 | 0000 0100 | 正数的补码是其本身 |