PS:本系列旨在深刻理解计算机内部的工作原理,记录笔记,以供个人工作学习参考。


思考一下,如果你生活在一个没有电的时代,你如果要去进行一些计数或者是运算,你会采取哪些操作呢?

远古时代,我们也许可以通过数木棍来进行一些简单的加法运算,只要把两堆数好的木棍堆叠在一起,再重新去数就好了。

文字产生,我们有了符号可以去表达数量,并以此来进行加减乘除的运算,基本满足了生活与生产的需要。

但是,自从步入工业时代后,我们的计算量可以说是爆发性的增加,普通的人工计算已经不能满足生产的需要了,大量的人工计算员不仅费时费力,需要一笔庞大的金钱支出,而且所求运算的结果也是存在着错误或者误差的。

机械计算机就在这个时代下应运而生了。

现在我们要将一个简单的1位数加法来交给机器来做,我们会怎么讲这个运算过程进行移植呢?

对于这个过程来讲,分为三个部分,即:输入——计算——输出。

输入:

这也是最开始所遇到的问题,怎么将我们理解的1转化为机器能够运算的基本单位呢?

我们可以理解为1就是1块砖头,2就是2块砖头, 1个砖头+2个砖头=3个砖头:

但对于这个过程来讲,1+2=3,输出的3要经过堆叠过程,需要将1置在2之上,以此得到结果,这显得有些费力气。于是,我们换个方法——将砖头横放:

与竖放不同的是,横放可以直接将二者从左到右推出,并在推出的过程中完成了相加操作,以此得到结果3,省去了一个“搬起叠加”的过程。

受此启发,砖头只不过是一个计数的单位,我们如果将砖头换成别的东西,放到这个系统中进行推进,是不是可以得到更好的效果呢?如果让你替换,你又会想到什么呢?

尺子也许是一个不错的选择,1+2这个过程,就是先推1,再推2,然后数出来结果为3个格子,如果加以刻度,便可以完成一半的加法运算。

但这仍然较为麻烦,因为我们仍需要在计算前后来数格子,于是我们便有了新的想法——给“尺子”添加一个旋钮。

与之对应的,尺子也换做齿轮来代替,因为旋转齿轮与下方的锯齿保持逐一对应的关系,暂按照十进制计算,一个旋钮上赋予10个齿,旋转一周就分别代表了0,1,2,3,4,5,6,7,8,9这10个数字。

该图为网络图片,仅供示意

第一个旋钮旋转2个尺度,第二个旋钮旋转3个尺度,因为两个齿轮共同依附在同一齿带上,则齿带共向前行进了5个尺度,而我们可以提前在齿带上标记,则可以直接读出结果为5。

我们也可以定义顺时针为加,逆时针为减。

这样有关于输入的问题,看起来好像被解决了。

计算:

为什么说看起来好像解决了输入的问题呢?这是因为两个输入的齿轮是同时依附在同一条齿带上,前者的转动必然带动后者的转动,反之亦然。这就无法为输入齿轮赋值,不能够达到明显的示意,仍需要人为查齿来进行旋转,那么有没有什么办法将前后齿轮的作用分开来进行计算呢?

思索良久无果,但恰巧视线落在了“1+2”中的“+”号上面,“+”号是一位运算符,定义了整个运算的方式,如果有必要,在计算的过程中,是需要按下这个加号的,对于2个输入的加法运算来讲,在按下加号的同时,假设输入旋钮的齿处于不同的深度,那么把齿条错位,是不是就避免了两个输入“互相影响”的问题呢?

此举并不影响最终的结果,是可行的。

输出:

上面已经说到,输出可以直接从最终的齿条标记读取出来。

但情况似乎还有些不对~

如果两个数相加,大于10怎么办,如果相加的数本身就是多位数呢?又该怎么表示与计算呢?

我们知道十进制满10进1,我们在个位齿轮每10的地方焊接一个标志,并在结果处的部分添加一套十位齿轮与齿条,十位的齿条与个位的标志位相联系,就完成了个位满十进位。

至于输入的十位、百位等就更简单了,只需要与输出的位数齿条相匹配,再加上“运算符”的齿轮置位,就完成了旋转输入,旋转输出的过程。图太过麻烦,就不画出来了,还需动用想象力。

那事实上到底是不是这样的呢?于是我就翻阅了许多资料来证实自己的想法,结果也是于想象中的几乎一样(除工艺制造)。

上图中,错落的齿轮,是不是就是用来处理不同位数的运算呢?

我们来看下,更加经典的手摇机械计算器的样子与工作方式:

我们看到,在红色框内,有9条尺码带,分别对应了个位、十位等,在每条尺码带上又有0-9个数字,这个是不是就相当于我们上面所说的齿带/传送带呢?

我们继续来看下,这个齿带的内部构造:

完全一样,小齿轮负责本位的计数,而且有标志位的齿负责进位计数!

整体上的内部效果为:

本文的目的为简单地了解机械计算器的工作原理,至于机械计算机是如何进行减操作、乘、除操作等,深究下去没有过多意义(毕竟这玩意已经属于古董了)。相信我们也能够从加法操作中,逐步通过改变齿轮的位置来、转动的方向来进行减法、乘除,升至更复杂的运算操作!

如果你对机械计算器仍有兴趣,我整理并上传了一些有关机械计算器的剖析视频,如果有兴趣,就点开看看吧!

>>>>>>>>>>>>>>>>>>>>>>>>视频传送门<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


PS:下篇写下电子计算机的初端——电子管与晶体管

自制计算机(1):机械计算机原理相关推荐

  1. 计算机CPU工作原理及汇编语言简介

    计算机CPU工作原理及汇编语言简介(链接)        从微信公众号把原文直接复制过来,发现图片.表格经常丢失,只有纯文字,所以建议直接点击上述链接阅读. 复制过来的纯文字内容如下(图片.表格丢失, ...

  2. 现在使用计算机的工作原理是,计算机的工作原理是什么

    很多人都会用电脑,那么你知道吗小编总结了一些资料,供大家参考! 计算机的基本原理是存贮程序和程序控制 预先要把指挥计算机如何进行操作的指令序列***称为程序***和原始数据通过输入设备输送到计算机内存 ...

  3. 从一段代码的汇编看计算机的工作原理

    朱宇轲 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 /*------ ...

  4. 计算机生活工作原理,计算机基本工作原理是什么?

    在介绍计算机的工作原理之前,首先了解一下什么是计算机指令. 简单的理解,指令指的是能被计算机识别并执行的二进制代码,它规定了计算机能够完成的某一种操作.一条指令通常由 2 部分组成,分别是操作码和操作 ...

  5. 计算机基础原理知识,计算机基础知识之计算机的工作原理

    1.3 计算机的工作原理 到目前为止,微机的工作原理均采用冯.若依曼的存储程序方式,即把程序存储在微机内,由微机自动存取指令并执行它.微机的工作过程就是执行程序的过程,而程序由指令序列组成,因此,执行 ...

  6. 计算机的工作原理是二进制原理吗,电子计算机的工作原理基于二进制。()

    相关题目与解析 电子数字式计算机只能使用二进制作为工作进制.() 电子计算机中只能存储二进制数.() 第一台电子数字计算机ENIAC采用的就是二进制表示数据.() 在数字电子计算机中采用二进制形式表示 ...

  7. 计算机工作在原理课件,滇人版七年级信息技术下册第一单元第一课第三课时计算机工作原理.ppt...

    1 计算机工作原理 一.教学目标: 1.知识目标: (1)掌握计算机工作的几个基本过程: (2)认识冯诺依曼型体系的计算机结构: (3)了解计算机工作原理: 2.能力目标 (1)培养学生研究计算机工作 ...

  8. 计算机信息管理系统设计原理探究,计算机信息管理系统设计原理探究

    盛巍 摘 要:在计算机信息技术发展和应用速度不断提升的背景之下,我国社会各个行业的计算机信息管理系统需求不断提升.人们可以通过计算机信息管理系统收集自己需要的信息资料,并对数据信息进行分析,在各项决策 ...

  9. 湘潭大学计算机组成原理试卷,湘潭大学 计算机组成与原理 控制器实验 实验报告...

    <湘潭大学 计算机组成与原理 控制器实验 实验报告>由会员分享,可在线阅读,更多相关<湘潭大学 计算机组成与原理 控制器实验 实验报告(10页珍藏版)>请在人人文库网上搜索. ...

  10. 计算机加法的电路原理及proteus仿真

    最近在休假中,太宅了,也没打算到处去玩.放空脑袋,读读写写,聊以自娱. 我们知道,计算机的功能,都是通过计算来完成的,而这个计算是怎样完成的呢?答案是:电路. 在前面的文章中,我们深入探讨了编码的本质 ...

最新文章

  1. THINKPHP 分页类
  2. linux下curl的使用
  3. 20171117-构建之法:现代软件工程-阅读笔记
  4. 诸葛io的技术架构图_【总结】MySQL技术内幕二:InnoDB存储引擎技术特性
  5. linux 解决man命令输出到文档打开乱码问题
  6. docker-compose 一键部署分布式配置中心Apollo
  7. magento SEO
  8. STM32:配置定时器为PWM输出模式以及编码器接口模式
  9. Sqlserver 索引
  10. 物联网解决方案应用之智能安防运维解决方案
  11. matlab线性规划系列之基础解题
  12. 基于二分查询树(BinarySearchTrees)实现的键值对表(symbole-table)
  13. 常见泰勒展开公式及复杂泰勒展开求法
  14. 塑料件设计-筋厚度与主体壁厚的关系
  15. win10共享打印机搜索不到计算机,Win10 1909电脑中搜索不到共享打印机的解决方法...
  16. 一款非常好用的下载工具-Free Download Manager-可代替迅雷使用的下载工具
  17. 支持向量机蠓虫分类问题
  18. 甲骨文大中华区人事变动:卢汝文退休
  19. [排序]鸡尾酒排序算法实现
  20. Winlogon事件通知包

热门文章

  1. Linux高级网络开发奇妙之旅
  2. keep-alive的用法和作用
  3. String fname=%e6%8e%88%e6%9d%832; url转码成中文
  4. mac系统升级后npm安装依赖报错gyp: No Xcode or CLT version detected
  5. 地球人口承载力估计(YZOJ-1021)
  6. 《Chrome插件英雄榜》第88篇更新!知乎网页助手让网页版知乎更好用
  7. 环境准备以及服务器的搭建(2)
  8. 共读ulord项目分析(一)
  9. mysql database alias_mysql小结——基础篇
  10. Kotlin协程核心库分析-5 Job异常处理器注意点