原码和补码

+1-1正数3码合一
原码0000_00011000_0001最高位0表示正数,1表示负数。原码计算得原码
反码0000_00011111_1110除最高位之外取反,反码计算得反码
补码0000_00011111_1111反码+1,符号位不变,符号位只在两个补码运算时改变,补码计算得补码

自问1:为什么不直接用原码进行加减?
答:1+(-1)=【0000_0001】-【1000_0001】=【10000010】=-2;减法运算会出错。
自问2:反码进行加减会有什么缺点?
答:1+(-1)= [0000 0001]反 + [1111 1110]反=-0;会有+0和-0
自问3:补码运算好在哪?
答:1+(-1)=[0000 0001]补 + [1111 1111]补= [0000 0000]补=0;消除±0

-1-127的结果应该是-128, 在用补码运算的结果中, [1000 0000]补 就是-128. 但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)
原文:https://blog.csdn.net/qq_40016949/article/details/80207662

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值