原码
原码是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
补码
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理
反码
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。反码通常是用来由原码求补码或者由补码求原码的过渡码。
原码、补码、反码的关系
- 原码---->反码
符号位不变,数值部分按位求反;
- 原码---->补码
(1)正数:正整数的补码是其二进制表示,与原码相同
(2)负数:将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1,即取反码后加一
(3)0的补码:数0的补码表示是唯一的
[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000
- 补码---->原码
已知一个数的补码,求原码的操作其实就是对该补码再求补码
⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
例:已知一个补码为11111001,则原码是10000111(-7)。
解:因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;再加1,所以是10000111。