ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

计算机内部探秘:统一到加法

2021-07-01 11:55:03  阅读:225  来源: 互联网

标签:10 计算机 17 二进制 补码 加法 探秘 进位


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

统一到加法
我们继续深究下去,打破砂锅问到底。
上述介绍的补码系统粗看起来这是比较奇怪的表示,实际上不然,了解了几种运算后,就会明白补码表示是多么简便。
我们来看两个数的加减运算。a+b或者a-b。如果用我们平时数学上的表示,我们需要分别判断a和b的符号,加上运算符,就有8种组合:+++,++-,-++,-+-,--+,---,+-+,+--。我们的内部电路的运算需要判断八种情况,会比较复杂。
如果用补码,因为补码自身已经处理了正负数,所以只需要判断运算符是+还是-,如果是+就把a和b直接相加,如果是-,就先对b再次求补码,然后加a。
举例如下:
计算17+22=39,用八位二进制表示为00010001+00010110,结果为00100111。正确。
计算22-17=5,22的二进制表示为00010110,17的二进制表示为00010001。判断运算符为-,所以把17求补码,为11101111。然后加00010110,结果为100000101,现在最高位出现了一个进位1,扔掉,保留8位,最终结果为00000101,正确。
计算22-(-17),22的二进制表示为00010110,-17的二进制表示为11101111。判断运算符为-,所以把-17求补码,为00010001。然后加00010110,结果为00100111。正确。
从上面的例子可以看出,用了补码之后,无论正负数,都可以统一处理了,并且化减法为加法。
没错,所有的运算最后统一到加法了。你领略到补码的简便了吧。
我们自己试着做一个加法器。
先看加法运算表:

0    1
0    0   1
1    1   10

因为是二进制,所以加法表很简单。
这个加法表里有一个不同之处,就是1+1=10,结果有两位,前一位是进位,后面的是值。我们需要分开处理,考虑进位,得到新的加法表:

0    1
0    00  01
1    01  10

再把上表分开表示成加法表和进位表:
加法表

0    1
0    0   1
1    1   0

进位表

0    1
0    0   0
1    0   1

我们仔细看上表。加法表跟我们以前提到过的逻辑异或XOR操作是同一张表,进位表跟逻辑与AND操作是同一张表。这样我们可以用逻辑门电路实现加法,用一个异或XOR门和一个与AND门。二进制下,0/1,既是数又是状态,所以逻辑运算和算术运算在电路这一层统一了。
用门电路,这个加法运算这么搭建:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

简化图为:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

但是这个加法器弱爆了,只能算一个bit的加法,还不会考虑进位,我们把它叫半加器。
那我们就接着看看多个bit位的加法器怎么做,有了半加器,这个任务不困难,把A+B的和与前一步的进位再用半加器加一次,再把两个半加器的进位或门输出成本加法器的进位就可以了。即通过两个半加器加上一个或门组合成一个全加器。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

简化图:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

接下来,我们把这个加法器组合成8位的加法器。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

相加的数据位A,B,从0到7每一位分别输入,前一位的进位输入到下一位。这样串连起来。

简化图为:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

现在看是不是长得有点像一个芯片的样子了?很有科技感。
不过我们现在同时也看到了,实现一个简单的运算就需要好多电子元器件组合起来,非常复杂,闭眼就可以想到真正的计算机有多复杂。好在通过工程的方式,这些器件可以一点点组成更大的器件,越组装越大,最后我们花几十美元就可以直接买到一个叫CPU的组件了。
0和1单独拿出来做不了什么事情,这些基本门电路单个也没有什么功能,但是组合在一起可以达到神奇的结果。上个世纪五六十年代仙童公司Robert Noyce与德州仪器公司Kilby发明了集成电路,它通过半导体工艺把所需的晶体管、电阻、电容等元件及它们之间的连接导线全部集成在一小块硅片上。
现在在一个指甲盖大小的硅片上能放上亿个元器件,比如Intel Pentium的i7大概集成了14亿个晶体管。工艺是按照Moore定律发展的,当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。这是一种指数级的增长,总有一天会将人类带到临界点。
现在你只需要花几块钱就可以买一个芯片,不要忘记这是费了多少人多少年努力的结果。指甲壳大小的一块芯片,汇聚了人类千年万年的智慧。
当一个CPU的成本降到一张纸的成本的时候,奇点就会来临,人类历史必将进入下一个阶段。
想想很奇妙,一个简单的整数,一个简单的加法,通过叠层累加,最后构成了庞大的算术体系。为什么科学家会不停地探索大统一理论?就是基于这个信念:这个世界能用一个统一的理论解释全部的现象。

 

标签:10,计算机,17,二进制,补码,加法,探秘,进位
来源: https://blog.51cto.com/u_14602625/2963400

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有