原码、反码、补码的关系

本文详细介绍了二进制表示中正数和负数的原码、反码、补码概念。原码直接表示符号,但正负数加法存在错误;反码解决了正数加正数、正数加负数的问题,但负数加负数仍存在问题;补码通过在反码基础上加1解决了所有加法问题,确保了运算的正确性。8位二进制数在有符号整数表示下范围为-128到127。
摘要由CSDN通过智能技术生成

背景介绍

1・计算机在任何情况下都只能识别二进制。
2・计算机在底层存储数据的时候,永远存储的都是"二进制的补码形式"。原因是:补码形式效率最高


原码・反码・补码之间的关系

正数

正数的原码、补码、反码表示方法均相同。

正数:66
原码:00011110
反码:00011110
补码:00011110

参考:https://baike.baidu.com/item/%E5%8F%8D%E7%A0%81?fromModule=lemma_search-box

负数

原码:如果我们用8位二进制表示一个数,+66的原码为00011110-66的原码就是10011110
反码:原码二进制的符号位1不变,其余取反。
补码:负数反码加1,加1时记得是逢2进1。注意:并不是把反码+1就定义为补码,只不过是补码正好就等于反码加1罢了!!

负数:-66
原码:10011110  
反码:11100001
补码:11100010

参考:https://baike.baidu.com/item/%E5%8E%9F%E7%A0%81?fromModule=lemma_search-box

原码:00000000
反码:00000000
补码:00000000

https://baike.baidu.com/item/%E8%A1%A5%E7%A0%81/6854613

原码存在的问题

1・正数加正数OK
2・负数加负数只是符号出错而已,数值的绝对值是对的
3・原码最大的问题就在于一个数加上他的相反数不等于零!反码的设计思想可能就是为了解决这一点

0001 + 0010=00111+2=3)        正数之间的加法 OK
0000 + 1000=1000+0+-0=-0) 问题不大
0001 + 1001=10101+-1=-2)  正数与负数相加 NG
1010 + 1001=0011-2+-1=3)  负数与负数相加 NG

反码存在的问题

1・正数与负数相加为0
2・反码最大的问题就在于 负数加负数计算错误

# 正数 + 正数
0001+0010=00111+2=3)          正数之间的加法 OK

# 正数 + 负数
0001+1110=11111+-1= -0)   OK
	 反   反
0101+1010=11115+-5= -0)   OK
	 反   反
0010+1001=10112+-6= -4)   OK
	 反   反

# 负数 + 负数	 
1110+1101=1011-1+-2=-4) NG
反   反    反
1110+1101=1011-1+-2=-3) OK  但是从原码维度来看,他其实是-3。巧合吗?
反   反    原
											
1110+1100=1010-1+-3=-5) NG
反   反    反
1110+1100=1010-1+-3=-2) NG 验证了上面确实是巧合
反   反    原

引入补码

# 正数 + 正数
0001+0010=00111+2=3)        OK

# 正数 + 负数
0001+1111=00001+-1= 0)   OK
	 补
0101+1011=00005+-5= 0)   OK
	 补   
0010+1010=11002+-6= -4)  OK
	 补   补

# 负数 + 负数	 
1111+1110=1101-1+-2=-3)  OK
补   补    补
											
1111+1101=1100-1+-3=-4) OK
补   补    补

参考

原码,反码,补码杂谈
https://blog.csdn.net/qq_43479628/article/details
https://qb.zuoyebang.com.html
https://blog.csdn.net/Matthew575/article/details/86618990
八位二进制数能表示数的范围以及原码、反码和补码含义

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值