打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
只有加法20210305给未来的自己

昨天看软件设计师教程,看到关于数字的机器编码,有原码、反码和补码。

这些内容我在大学的课程中学过,但是我有些无法理解原码、反码和补码的意义是什么。

这次看到这个知识点,我不想再这么不清不楚过去了,于是到网上搜索这三种码的意义,特别是反码和补码这两种的意义。

最终我找到了这两种码的意义,就是解决计算机做减法的问题。

为什么这么说呢?

首先在计算机的世界只有两种数字0和1,我们在计算机中看到的众多数字都是通过0和1组合表示的,比如数字7就是0111,这里我就不多解释,因为这不是计算机专业课。

在计算机中如果进行减法,可以看作是一个正数加一个负数,但是这样进行直接加会出现各种奇怪的答案,比如会出现诸如 1+(-1)= -2这种结果,这显然是不对的。

于是诞生了反码这种解决方案,但是这种方案有一个瑕疵在面对两个负数相加会出现奇怪的答案,之所以瑕疵是因为,并不是不能解决,是能够解决,只是做的不那么漂亮,就是先将两个负数当作正数进行相加,之后强制将结果变成负数,比如(-5)+(-5)变成5 + 5算出结果之后再在前面加一个负号。

在这种背景下诞生了补码这种解决方案,这种方案高明之处在于,将两个数相减转换成相加,为了方便理解,我用钟表举一个例子,比如现在是10点,我想要将钟表拨弄到8点应该怎么做?是不是有两种方法,一个是逆时针旋转2个小时的时间,一个是顺时针旋转10个小时。

发现没有10 - 2 和 10 + 10 这两种方案是等价的,即 10 - 2 = 10 + 10。

就这样将 10 - 2 这么个减法的操作变成了10 + 10 的操作,将减法的操作变成了加法的操作,实际上计算机计算的时候也确实是这么计算的。

你是不是觉得很不可思议,10 + 10 怎么会等于8呢?

你这么想10 + 10 = 20 因为钟表是12进制(也就是超过12便会重新计算),于是20需要减去12,这样一来不就是8了吗。

看到没有计算机就是通过补码这种方案,将减法变成了加法,于是我得出这样一个感慨:只有加法。

多说两句,减法可以变成加法,乘法也可以变成加法,除法最后也可以变成加法,自然只有加法,这一刻我也突然理解,为什么电子元件中有一个累加器的单元,因为都可以转换成加法。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
源码、补码、反码
补码到底是个什么东西
为什么计算机用补码存储数据?
原码反码补码
原码、反码和补码
分享:负数的二进制编码——越是基础的越是要掌握
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服