1。 原码
将一个整数转换成二进制形式,就是其原码。例如short a = 6; a 的原码就是0000 0000 0000 0110;更改 a 的值a = -18; 此时 a 的原码就是1000 0000 0001 0010。
通俗的理解,原码就是一个整数本来的二进制形式。原码 反码 补码详解
2。 反码
对于正数,它的反码就是其原码(原码和反码相同);负数的反码是将原码中除符号位以外的所有位(数值位)取反,也就是 0 变成 1,1 变成 0。例如short a = 6; a 的原码和反码都是0000 0000 0000 0110;更改 a 的值a = -18; 此时 a 的反码是1111 1111 1110 1101。
3。 补码
对于正数,它的补码就是其原码(原码、反码、补码都相同);负数的补码是其反码加 1。例如short a = 6; a 的原码、反码、补码都是0000 0000 0000 0110;更改 a 的值a = -18; 此时 a 的补码是1111 1111 1110 1110。
可以认为,补码是在反码的基础上打了一个补丁,进行了一下修正,所以叫“补码”。
原码 反码 补码详解
原码、反码、补码的概念只对负数有实际意义,对于正数,原码、反码、补码都是一样的。
原码 :最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。
反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。
补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。
例如 十进制数字:5
5=2^2+2^0 101 至少要三位数字 加上符号位 就是4位数字
原码:0101
反码:0101
补码:0101
例如 十进制数字:-5
5=2^2+2^0 101 至少要三位数字 加上符号位 就是4位数字原码 反码 补码详解
原码:1101
反码:1010
补码:1011
例如 将补码1011 转换为原码
补码:1011
符号位不变,数值位取反:1100
加1后得到原码:1101
补码变成原码的方式是:正数的补码与原码一致,负数的补码按位取反加1,符号位不变
反码变成原码的方式是:正数的反码与原码一致,负数的补码按位取反,符号位不变原码 反码 补码详解
2、原码、反码、补码 0的问题
用4位二进制原码表示0:-0=1000 +0=0000
用4位二进制反码表示0:-0=1111 +0=0000
用4位二进制补码表示0:-0=0000 +0=0000
000 --> 0
111 --> 7
3、原码、反码、补码 表示范围
n+1位数字,绝对值最大的原码是 -(2^n - 1)和 2^n - 1
n+1位数字,绝对值最大的反码是 -(2^n - 1) 和 2^n - 1
n+1位数字,绝对值最大的补码是 -2^n
例如
原码:
二进制无符号000~111 十进制0~ 7 0 ~ 2^3-1
二进制有符号0000~0111 十进制0~7 0 ~ 2^3-1
二进制有符号1111~1000 十进制-7~0 -(2^3-1) ~ 0
综上所述:4位原码的表示范围: -(2^3 - 1) ~ 2^3-1
用4位二进制原码表示的范围 1111~0111可以表示15个十进制数字 -(2^3 - 1) ~ 2^3-1