原码
原码,顾名思义就是现实生活中表示的码,原来的码。其中最高位为符号位,0代表正数,1代表负数
以8位二进制为例
[+1]原 = 0000 0001
[-1]原 = 1000 0001
进而,8位二进制可表示[1111 1111, 0111 1111],即[-127, 127]
反码
正数的反码,就是其本身
负数的反码,就是在原码的基础上,符号为不变,其余各位取反
同理
[+1] = [0000 0001]原 = [0000 0001]反
[-1] = [1000 0001]原 = [1111 1110]反
计算技巧:-1 的反码 为 -126,-2的反码为-125。是不是有感觉了,数字部分就是127-i
补码
正数的补码,就是其本身
负数的补码,就是在原码的基础上,符号位不变,其余各位取反后+1,即反码+1
同理
[+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
[-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补
此外,[1000 0000]补 代表-128,所以用补码表示的区间为[-128, 127]
计算技巧:-1 的补码为 -127,-2的补码为-126,数字部分就是128-i
运算
原码的+和-都可以用补码的+来表示
1-1 = 1+(-1)
[0000 0001]原 - [0000 0001]原 = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补 = 0