反码、补码的本质意义

	以钟表为例,从11点转到6点,可以逆时针转5格,也可以顺时针转7格。
	则有 11-5=6,(11+7)mod(12)=18mod(12)=6;
	钟表中数字从0点到11点,最大的数为11,0到11共有12个数,12为这个代数系统的模。
	7=12-5,12=11+1;
	(11+(11+1-5))mod(12)=6
	(11+(12-5))mod(12)=6
		(被减数+(模-减数))mod(模)
	类比推理,二进制系统中,如何将减法转化为加法呢?
	举例,有符号数,一共有4位,第一位为符号位,后三位为数值位,如1010代表-2
	,那么有多少个数呢?,
	显然每一位有两种可能,一共有2的4次方,即16个数【模】,
	其中我们把1000规定为-8,最大的正数为0111(2进制)=+7(10进制)。
	模为10000(注意位数为5位)。
	怎么用补码进行运算呢?(这里以7-1为例,,0111=7  1001=-1)
	这里我们先给出补码的定义,反码加1.
	那么反码怎么算呢?
	正数的反码,补码都是它本身。
	负数要复杂一点:
	-1(1001)的反码1110,符号位不变,其他位取反。
	-1 的补码为:反码加1,即1110+0001=1111。
	7的补码为0111,-2的补码为1111。
	0111+1111=10110。舍弃最高位即10110-10000=0110
	0110也是补码,为+6的补码。
	我们来分析原因:
	(0111+(10000-0001))mod(10000)=
	(0111+1111)mod(10000)=10110mod10000=0110
	由此我们得出反码,补码的真实意义:
	先以钟表为例:最大数为11,12为模,模=最大数+1
	5的反码为11-5=6;
	5的补码为反码+1=6+1=7;
	-1(1001)的反码为1110。
	先忽略烦人的符号位。
	0111-001=0110。
	哦,原来负数反码是这样。
	-1(1001)和-6(1110)
	|-1|+|-6|=7(0111),7为最大数
	再看补码
	-1的补码为
	反码+1
	1110(反码)+1=1111(补码)	
	模 - | -1|
	10000(模)- 0001=1111(补码)
	值得注意的是,反码和补码都是没有正负的。
	仅仅二进制中为把减法转化为加法过程中产生的一种抽象码
	人为定义的。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值