让星星⭐月亮告诉你,二进制加减运算进阶(原码/反码/补码/-1-1=(-1)+(-1)=-2)

⭐⭐⭐简述🌙🌙🌙

计算机中数据以二进制方式0或1进行存储,计算时也采用二进制进行,二进制计算过程中涉及到以下概念
原码:数据对应的二进制表示,首位代表符号位0-正数,1-负数;
反码:正数的反码等于其原码;负数的反码是在其原码的基础上,符号位不变,其他位取反;
补码:由于直接采用反码计算,符号位也会参与计算,导致最终结果不准确,所以引进了补码.正数的补码等于其反码同样等于其原码;负数的补码等于其反码+1.所以,在根据补码推算原码时,需要逆向计算,先补码末位-1,再取反.

⭐⭐⭐举例🌙🌙🌙

:-1-1=(-1)+(-1)=-2
(1)-1的原码,首位是1表示负数,其他位和其对应正数相同,即:1000 0001;
(2)-1的反码,等于其原码取反,因为是负数,所以其首位符号位不变,其他位取反,即:1111 1110;
(3)-1的补码,等于其反码末位加1,即:1111 1111.
(4)则

(-1)+(-1)= 1111 1111(补码)
                        1111 1111(补码)
                        -------------
                        1111 1110(补码结果)

(5)此时得到还只是补码结果,需再把补码结果逆向计算,先转成反码再转成原码,即补码结果末位减1再取反:

			1111 1110(补码结果)
   -                1(末位减1<因末位为0,减1时需向左借1位,借位后末位变成2(二进制逢二进一),末位2-1=1,被借位减1变成0>)
			--------------------------
		    1111 1101(补码结果对应的反码)
		    1000 0010(对补码结果对应的反码取反(一样的原则,取反时首位符号位不变),得到原码,即计算结果,转换成10进制,即-2)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dylanioucn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值