原码反码与补码(二进制数的编码表示)

数值信息在计算机内采用二进制编码表示。在计算机中,数字的符号位一般用“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求得。
对于正数来说,其原码、反码、补码形式相同。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值