原码反码与补码(二进制数的编码表示)
Posted WINNER_QIUQIU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原码反码与补码(二进制数的编码表示)相关的知识,希望对你有一定的参考价值。
数值信息在计算机内采用二进制编码表示。在计算机中,数字的符号位一般用“0”表示正号,“1”表示负号,符号位放在数的最高位。
例如:8位二进制数:+1011011和-1011011在机器中分别表示为:01011011和11011011.
原码
将符号位数字化为0或1,可参照上述例子。
对于一个带符号的纯小数,它的原码就是把小数点左边一位作用符号位。例如:
X=0.1011,其对应的原码为:
[
X
]
原
[X]_原
[X]原=0.1011
X=-0.1011,其对应的原码为:
[
X
]
原
[X]_原
[X]原=1.1011
采用原码表示法时,编码简单直观,但存在下述问题:
1.零的表示不唯一。
2.用原码进行四则运算是,符号位需单独处理。
反码
反码是编码方式和求补码的中间码,其规则如下:
正数的反码与原码表示相同。
负数反码的符号位与原码相同,其余各位取反,例如:
X=+1100110,
[
X
]
原
[X]_原
[X]原=01100110,
[
X
]
反
[X]_反
[X]反=01100110
X=-1100110,
[
X
]
原
[X]_原
[X]原=11100110,
[
X
]
反
[X]_反
[X]反=10011001
X=+0000000,
[
X
]
原
[X]_原
[X]原=00000000,
[
X
]
反
[X]_反
[X]反=00000000
X=-0000000,
[
X
]
原
[X]_原
[X]原=10000000,
[
X
]
反
[X]_反
[X]反=11111111
和原码一样,反码中的零表示也不唯一。
对于纯小数:
X=0.1011,
[
X
]
原
[X]_原
[X]原=0.1011,
[
X
]
反
[X]_反
[X]反=0.1011
X=-0.1011,
[
X
]
原
[X]_原
[X]原=1.1011,
[
X
]
反
[X]_反
[X]反=1.0100
补码
如果有
n
n
n位整数,则它的模数为
2
n
2^n
2n;如果有
n
n
n位小数,小数点前一位为符号位,那么它的模数为2。
由以上规定得知,对于一个二进制负数,可用其模数与真值做加法求得其补码。例如:
X=-0110,
[
X
]
补
[X]_补
[X]补=
2
4
2^4
24+(-0110)=1010(可换算成十进制进行计算再换算回二进制)
X=-0.1011,
[
X
]
补
[X]_补
[X]补=2+(-0.1011)=1.0101
对于一个负数,其补码由该数反码的最末位加1求得。
对于正数来说,其原码、反码、补码形式相同。
以上是关于原码反码与补码(二进制数的编码表示)的主要内容,如果未能解决你的问题,请参考以下文章