热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

计算机主机的奥秘,计算机的奥秘原来这么简单(一)

要学习计算机的基础知识,真正理解计算机的组成原理和工作过程往往是一件令人头痛的事,即使对计算机专业的学生来说,也并不轻松。所以小编决定用几

要学习计算机的基础知识,真正理解计算机的组成原理和工作过程往往是一件令人头痛的事,即使对计算机专业的学生来说,也并不轻松。所以小编决定用几篇文章深入浅出的讲述一下计算机原理相关的知识,并通过数字逻辑电路以及存储器,微处理器的形成、组织及发展阐述一下编码的实现。本系列接下来还涉及到计算机系统,编程语言的发展,对计算机图形化的相关技术也做一些简单的描述。

什么是编码

我们都知道,了解计算机最基础的知识,首先要知道什么是编码或代码。编码通常是指一种在人和机器之间进行信息转换的系统(体系)。换句话说,编码便是交流。有时我们将编码看成是密码(机密),其实大多数编码并不是。大多数的编码都需要被很好地理解,因为它们是人类交流的基础。

我们用嘴说出的每个词语每句话,这些可以被那些听得到我们声音,理解我们所用语言的人所听懂,我们称这种编码为“语音”。还有一种编码方式,那就是我们在印刷的纸质材料上看到的字符,称之为“书面语言”。在许多语言中,语音和文字间有很强的联系。

同样的,在计算机中也使用了不同的编码来传递和存储数字、声音、音乐、图像和视频。计算机不能直接处理人类世界的编码,因为它不能模拟人类的眼睛、鼻子、嘴和手指来接收信息。尽管这些年来计算机的发展趋势使我们的桌上电脑具有捕获、存储、处理和提供人类交流中所使用的各种信息的能力,而且不论这些信息是视觉的、听觉的还是两者的混合。所有这些信息都要求使用它们自己的编码方式。

摩尔斯电码是随着电报机的发明而产生的,摩尔斯电码能很好地说明编码的本质。

106354959_1

摩尔斯电码对照表

摩尔斯电码的发送易于接收,即使你没有记住摩尔斯电码,也可以方便地借助上面这张按字母顺序排列的表发送。

摩尔斯电码被称为二元码,因为编码中仅含“滴”和“嗒”。这与一个硬币很相似,硬币着地时只可能是正面或反面。二元事物(例如硬币)、二元编码常常用2的乘方来描述。上面所做的对二元编码的分析在数学上的一个分支—组合学或组合分析里只能算是一个简单的练习。传统上,由于组合分析能够用来确定事件出现的几率,例如硬币或骰子组合的数目,所以它常用于概率统计,但它也同样有助于我们理解编码的合成与分解。

摩尔斯电码应用

手电筒是一种大多数家庭都拥有的较简单的电器。拆开一支有代表性的手电筒,你会发现它包括一对电池,一个灯泡,一个开关,一些金属片和一个把所有零件装在一起的塑料筒。

106354959_2

手电筒电路

我们可以通过控制开关的开合来模拟摩尔斯电码里面的“滴”和“嗒”,如果线路够长(不考虑压降),另一个人就可以在很远的地方通过观察灯泡的量灭得到“滴、嗒”组成的信号。那么一个最简单的单向电报系统就做好了。接下来优化一下,就可以得到下图所示的双向电报系统。

106354959_3

电报系统演示图

那么到此为止,我们已经做出了通信改革中的关键性一步。只要搭造更长更长的线路,就可以越过成百上千公里使用摩尔斯电码进行交流。

继电器的出现

事实上发报系统不可能使用灯泡作为信号设备,因为在这里灯泡的实用性不高。而是使用的电磁现象,就是众所周知的继电器。因此实际上电报系统中的电报按键、继电器和发声器大致连接应该是大致如下:

106354959_4

我们知道二进制数与计算机密切相关,而电报继电器可以表示二进制数字。继电器闭合,代表二进制数字1;继电器断开,代表二进制数字0。它是一个开关,但并不是由人工而是借助于电流进行开关操作的。利用这种设备可以做出令人惊奇的事情。事实上,你可以用继电器装配出一台计算机中的大部分部件。但是由于它只能表示二进制数字,所以在使用它之前,我们还要了解什么是二进制数。

二进制数

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。这里不做过多的解释和描述,只通过一个简单的例子,说明一下它在计算机中存在的方式。

在生活中二进制有很多应用,比如条形码。

106354959_5

实际上,扫描仪只识别整个条形码的一条窄带,条形码做得很大是为了便于结算台的操作人员用扫描仪对准顾客选购的物品。扫描仪所看到的那一条窄带可以这样表示:

106354959_6

这看上去就很像摩尔斯电码......扫描仪读到的一串串二进制数,通过规则解码,就得到下面所示的商品数字了。

所以计算机中不会存储信息的表面数据,而是通过编码后,存储对应的二进制数信息,同样的调取信息时,也是通过对二进数的反编码,得到人眼能够看懂的直接信息。

今天了解到计算机中最最基础的一些知识后,下篇就讲一下逻辑门电路、加法机和减法的实现。



推荐阅读
  • 深入理解父组件与子组件的引用和访问
    本文详细介绍了如何在Vue.js中通过$children和$refs属性实现父组件对子组件的访问,并提供了具体的代码示例及最佳实践。 ... [详细]
  • LeetCode 540:有序数组中的唯一元素
    来源:力扣(LeetCode),链接:https://leetcode-cn.com/problems/single-element-in-a-sorted-array。题目要求在仅包含整数的有序数组中,找到唯一出现一次的元素,并确保算法的时间复杂度为 O(log n) 和空间复杂度为 O(1)。 ... [详细]
  • Søren Kierkegaard famously stated that life can only be understood in retrospect but must be lived moving forward. This perspective delves into the intricate relationship between our lived experiences and our reflections on them. ... [详细]
  • PyCharm中配置Pylint静态代码分析工具
    本文详细介绍如何在PyCharm中配置和使用Pylint,帮助开发者进行静态代码检查,确保代码符合PEP8规范,提高代码质量。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • python的交互模式怎么输出名文汉字[python常见问题]
    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>,此时我们可以使用print() ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • 本文详细探讨了Java中的24种设计模式及其应用,并介绍了七大面向对象设计原则。通过创建型、结构型和行为型模式的分类,帮助开发者更好地理解和应用这些模式,提升代码质量和可维护性。 ... [详细]
author-avatar
觴儿_996
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有