《编码的奥秘》---学习编程一年半的体会

本人在校大学生,从大一下学期开始自学编程(JAVA)。到现在2018年7月2号也过了一年半的时间了。期间做过很多应用程序(PS:大多数都是做着玩的),比如做一个GUI聊天室(JAVA)、Android应用、Unity3D游戏(C#)、SSH整合开发一个WEB系统(完整版)等…虽然我这些都做过,但是…其中原理我却了解甚少,比如说JAVA的虚拟机的内存释放(垃圾回收器)、socket的连接过程(TCP三次握手以及四次挥手)、HTTP协议,这些东西我都不是很了解。
看过一篇文章,具体内容忘记了。说的是遇到一个解决数据库连接太慢的问题,有三种人去解决。我只记得2种人,因为太有比较意义了。第一种是通过网络抓包工具分析得到瓶颈,然后把问题解决了。另一种人是对这种数据库的经验已经很丰富,然后改了配置文件把问题解决的。当然在这个问题中,后者可以迅速的把问题解决,但是如果换了一个数据库,也许第二种人就不知道该怎么解决问题了。(PS:本人就属于第二种人,应用知道很多,理论懂得甚少。)这其实是非常不利于自己以后的发展的,IT新技术出来的太快了。自己也学过很多什么听上去吊吊的技术,也搭建起来了,手机上可以访问,一切正常。但是在这个过程中遇到的BUG基本上都是通过百度查找“得来”的答案。所以自己想了挺多之后,也是拿起来底层理论开始进行系统性的学习。最后这本书的博客只作为随笔,说给自己听,若有“有缘人”看到且看且珍惜吧。


编码的奥秘全书总结

这本书很通俗易懂,跟看故事书一样。从手电筒到ASCII编码,从十进制到二进制再十六进制,从组合电路到8080芯片,从开关到控制台汇编程序。这一个历经过程写的算是淋漓尽致了。


加法器

  • 加法器
    • 半加器(结果是xor,进位是and)
    • 全加器(考虑低位进位)

半加器逻辑图如下:
这里写图片描述
全加器逻辑图如下:
这里写图片描述

用加法器实现减法的方式是通过原码、反码、补码实现。
步骤是:

  1. 求减数的补码
  2. 被减数与第一步的结果相加
  3. 对第二步结果+1
  4. 减去最高位

(PS:以上步骤针对于被减数大于减数的情况下)


同步计数器

D型边沿触发器和时钟实现同步计数器(CP)
D型边沿触发器特性表(PS:上升沿有效,也就是上升沿的时候输出取反,现态为0,次态则为1)如下:
这里写图片描述
逻辑图如下:
这里写图片描述
波形图(PS:图片顺时针旋转90°就会得到0000->0001-…->1111的序列)如下:
这里写图片描述


RAM存储器

,得到8位锁存器后,,。这样就得到拥有4根地址线的16x1的RAM存储器了。

D型触发器特性表:
这里写图片描述
D型触发器和写入信号实现8位锁存器:
这里写图片描述
通过3-8译码器选择写入数据,通过8-1选择器实现输出数据,得到8x1存储器:
这里写图片描述
再通过2-1译码器,得到16x1存储器
这里写图片描述

通过前面的实现我们可以得到一个方程:RAM阵列的存储容量=2的地址线的根数

通过这个我们就可以用16根地址线跟8个数据输入得到一个64Kx8的RAM
这里写图片描述

至于为什么是易失的,是因为继电器的电源来自于给这个RAM提供电源的设备(我们在这里称这个设备为总电源吧)。读到后面会知道,现在的计算机的RAM不用继电器,而是采用别的技术来实现,不过还是易失的就对了。


自动操作

接下来是自动操作。实现原理很简单,我们用一个振荡器来驱动一个16位计数器,计数器输入到64Kx8的RAM从而读取到RAM中的数据,最后再通过加法器跟锁存器实现读取RAM自动进行加法运算的操作。

不废话。上图:
这里写图片描述
发现灯泡亮的意义不大,改进
这里写图片描述

到目前为止,我们一直“强调”着电路的实现。现在我们把这些实现当做细节忽略。
这里写图片描述

未完待续。。。

猜你喜欢

转载自blog.csdn.net/qq_37340753/article/details/80888564