计算机中只有加法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了吗。

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 计算机中的数均以0和1组成各种编码,在计算机中参与运算的数有两大类: 无符号数和有符号数。计算机中的数均放在寄存...
    zhuke阅读 2,729评论 0 1
  • 最近在学习位运算符时,发现负数在做带符号位的右移运算符时,结果与想象中的大不一样,经过查阅资料之后发现,原来这一切...
    YyzclYang阅读 2,461评论 0 1
  • 今天给学生上数字逻辑第一节课,主要讲了数制,后面简单提及了原码、反码和补码,碰到了两个问题:第一,十进制数转八进制...
    CodingTech阅读 2,121评论 5 17
  • 这是一篇关于带符号二进制数据在计算机中表示方法及加减运算的文章,是《计算机原理》这门课程有关内容的总结性笔记。 0...
    Ackerzy阅读 3,074评论 1 1
  • 上学的时候就记住了下面这些: 原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用...
    gaaaaaaaaaao阅读 585评论 0 0