加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

原码、反码、补码

(2022-05-24 12:29:36)
标签:

it

分类: 技术
二进制的原码、反码、补码
https://zhuanlan.zhihu.com/p/99082236
原码、反码、补码的引入是为了解决做减法的问题。
在原码、反码表示法中,我们把减法化为加法的思维是减去一个数等于加上这个数的相反数,结果发现引入符号位,却因为符号位造成了各种意想不到的问题。
原码最大的问题就在于一个数加上它的相反数不等于0
其实减去一个数,对于数值有限制、有溢出的运算(模运算)来说,其实也相当于加上这个数的同余数。
也就是说,不引入负数的概念,就可以把减法当成加法来算。

四位二进制数最大容量是多少?其实就是2^4=16(10000)。
那么-2的同余数,就等于10000-0010=1110,16-2=14。
既然如此,0110-0010=0110+1110=10100,6-2=6+14=20。
如果我们把1110的最高位看作符号位后就是-2的补码,这可能也是为什么负数的符号位是1,而不是0。
由于补码表示中的符号位可以与数值位一起参加运算,并且可以将减法转换为加法进行运算,简化了运算过程,因此计算机中均采用补码进行加减运算。

为什么负数的补码的求法是反码+1
因为负数的反码加上这个负数的绝对值正好等于1111,在加1,就是10000,也就是四位二进数的模,
而负数的补码是它的绝对值的同余数,可以通过模减去负数的绝对值得到它的补码,所以负数的补码就是它的反码+1。

一个案例搞懂原码、反码、补码
https://baijiahao.baidu.com/s?id=1674791878881242895&wfr=spider&for=pc
负数的补码为模减去该数的绝对值

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有