原码反码补码计算机底层的加减法

结论

先说结论
原码无法做到正+负的运算而补码可以
反码原码补码的中间产物

转换

正数的原码=反码=补码
负数:反码=~abs(原码)
           补码=反码+1

原码

在计算机中所有的数据都是表示为2进制的。原码就是直接将10进制转化为补码。并用最高位来表示数字的正负。(0表示正,1表示负)

								 2的原码为:0000 0000 0000 0010
								-2的原码为:1000 0000 0000 0010

接下来我们来试验一下加法(-2+2)

									//二进制运算逢2进1
									 0000 0000 0000 0010+
									 1000 0000 0000 0010=
									 1000 0000 0000 0100

结果为1000 0000 0000 0100转回十进制就是2-+2=-4!出现了危机。原码无法做到正+负的运算

补码

补码可以正确的表示计算机中的正+负也就是减法运算。
按照我们小学6年的努力学习成果,在不出什么意外的情况下-2+2=0。而补码可以表示计算机中的正+负也就是减法运算。因此2+(-2的补码)=0

							 2的原码:0000 0000 0000 0010+
							-2的补码:xxxx xxxx xxxx xxxx=
								  00000 0000 0000 0000
					逆推可得-2的补码:1111 1111 1111 1110
  • 推断公式

将-2的原码和补码比较一下就可以得到补码的推断公式:

						正数的补码为其自身
						负数的补码:
							1. 取绝对值转2进制
							2. 按位取反
							3.1

我们来验证一下

						abs(-2)2进制->0000 0000 0000 0010
						~0000 0000 0000 0010=1111 1111 1111 1101//按位取反1得最终结果:1111 1111 1111 1110

关于补码可以看一下【一听就懂】什么是补码?

反码

反码是求补码过程中的中间产物,原码减1就是反码也就是说

						(-2)的反码=~abs(-2)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值