编码的本质及计算机的工作原理( 四 )



文章图片

香农 , 最先洞察到了开关系统和布尔逻辑的关系 , 并发表论文《继电器和开关电路的符号化分析》 , 可以说 , 这篇文论让人们意识到 , 可以用电路来实现二进制表示和二进制计算 。香农活到了二十一世纪 , 当他看着这个世界 , 因为他的贡献而变得如此美好时 , 内心一定是很欣慰的 。香农更有名的一篇论文是《通信的数学原理》 , 学过通信的人 , 不能不知道这篇论文 。作为信息论的创始人 , 香农当之无愧 。来思考一个有趣问题:香农为什么没有拿图灵奖呢?

编码的本质及计算机的工作原理
文章图片

文章图片

六. 二进制计算的实现继续回到正题 , 反思一下上面的设计 , 问题就在于电压位太多了 , 导致0v和9v中间插入了太多的电压位 , 相邻电压位容易错乱干扰 , 不准确 。
联想一下前面提到的二进制 , 能不能用二进制来计算呢?把0编码成0v, 把1编码成9v, 也就是用0v标志0 , 用9v表示1 , 完全可以 , 看设计图:

编码的本质及计算机的工作原理
文章图片

文章图片

这样 , 即使电压出现偏差 , 比如8.4v, 也认为它是9v产生的偏差 , 所以判定它是9v , 对应二进制的1. 如果出现1.6v, 知道这是0v出现了偏差 , 所以可以判定它是0v, 对应二进制的0.由此可见 , 引入只有0v,9v这两个电压位后 , 系统会更稳定可靠 , 出错的可能更小 。两个电压位的加法 , 其实就是二进制加法 。二进制中的0用0v来表示 , 二进制中的1用9v来表示 。至于14.001加38.002 , 要实现准确计算也很简单 , 无非就是多加几根电线 , 专门表示001和002 , 跟整数加法的逻辑类似 。这样一来 , 0.001和0.002就是准确值 , 不怕电压波动 。上面是6位二进制数字和6位二进制数字加法器 , 如果用电路实现它 , 首先就要实现1位二进制和1位二进制相加的加法器 , 即我们需要做一个下图中的“神秘电路” , 其实就是“半加器”:

编码的本质及计算机的工作原理
文章图片

文章图片

到此为止 , 虽然没有完整地设计出加法器的具体电路 , 但对计算机的计算原理 , 有比较深刻的认识 。计算机的计算本质 , 就是将要计算的数字 , 进行二进制编码 。然后 , 用对应的电路的高低电压(如9v和0v)来表示 , 通过电路的逻辑功能 , 从电路的输出中得到高低电压 , 进而理解为二进制 , 并最后转化为数字 , 作为结果值 。需要注意 , 高低电压(如9v和0v) , 在数字电路中 , 经常被称为高电平和低电平 。下次我们提到高电平时 , 表示二进制数字1 ,而提到低电平时 , 表示二进制数字0.那么 , 高电平和低电平一定是9v和0v吗?显然不一定 。也可以把高低电平分别定义为5v和0v , 在proteus仿真时 , 我用5v表示高电平) , 而用0v表示低电平 。这样 , 就实现了用电路来计算二进制 。有了编码和计算 , 我们才能让计算机 , 呈现出丰富多彩的功能 , 这就是计算机的工作原理 。粗略说起来 , 也是挺简单明了的 。

编码的本质及计算机的工作原理
文章图片

文章图片

总结一下 。本文我们介绍了计算机的工作原理 , 又讲了编码的本质和二进制编码 , 然后讲了二进制编码的好处 , 最后从设计图的角度 , 实现了二进制加法 。