转载请注明出处:https://www.cnblogs.com/morningli/p/15895939.html  

  文艺复兴时期,随着科学和数学的发展,人们对算术运算的要求越来越高。为了更有效的节约时间和精力,更好的提高计算效率、精度和准确性,更多的消除人为的错误,简化重复的算术运算。机械计算机的思想孕育而生了。

达·芬奇(Leonardo di ser Piero da Vinci)的草图

  “文艺复兴三杰”之一的达·芬奇,在他的马德里手稿I(Codex Madrid I)描绘着一部齿轮装置机器的草图,这很可能是为了计算而设计的。图中的齿轮可能代表着一个数字:小齿轮为数字1,大齿轮为数字10,故有人将这部机器诠译为第一部机械计算机。乔治·蔡斯说:“机械计算机史的本质就用是数字轮和旋转装置记录数字和十进位值的故事”。

图片来源于网络

  1967年,马德里手稿(Madrid Manuscripts)发现不久后,古亚特利博士(Dr. Guatelli )赴美国麻省理工学院(MIT:Massachusetts Institute of Technology)图书馆研究草图,他将此与包含有很多齿轮传输的大西洋手稿(Codex Atlanticus)相结合。1968年,古亚特利博士复制出类似的机器,现陈列在IBM展览馆。

图片来源于网络

契克卡德(Wilhelm Schickard)的计算钟(Rechenuhr

  1623年,德国科学家契克卡德制作出第一台通过操作齿轮转动进行六位以内加减乘除运算的机器(因机器上部附加一套圆柱型“纳皮尔算筹”(Napier's bones),该机器除了能运行加减运算,还能进行乘除运算。) 。它还设置了某种“溢出”机制的响铃,故称“计算钟”。但该机器并没有被保存至今,现在仅发现与该机器相关的3个文件---契克卡德给开普勒的两封信和带机械师说明的机器草图。

图片来源于网络

图片来源于网络

图片来源于网络

  1960年,德国蒂宾根(tübingen)大学的哲学教授Bruno von Freytag Löringhoff,按照契克卡德手稿模拟复制了第一台契克卡德计算钟。该机器经改进后工作正常,除进行6位加减乘除运算外,数位溢出时还能响铃报错。Bruno von Freytag Löringhoff教授在原稿的基础上对机器额外增加了轮子和弹簧及设计了可能导致机器无法正常工作的单齿轮移动机制(carry mechanism)。

图片来源于网络

  乘法器部分其实就是简单地将乘法表印在圆筒的十个面上,机器顶部的旋钮分有10个刻度,可以将圆筒上代表0~9的任意一面转向使用者,依次旋转6个旋钮即可完成对被乘数的置数。横向有2~9八根挡板,可以左右平移,露出需要显示的乘积。以一张纪念邮票上的图案为例,被乘数为100722,乘以4,就移开标数4的那根挡板,露出100722各位数与4相乘的积:04、00、00、28、08、08,心算将其错位相加得到最终结果402888。

图片来源于网络

  加法器部分通过齿轮实现累加功能,6个旋钮同样分有10个刻度,旋转旋钮就可以置六位整数。需要往上加数时,从最右边的旋钮(表示个位)开始顺时针旋转对应格数。以计算721+901为例,,先将6个旋钮读数置为000721:

图片来源于网络

  随后最右边的(从左数第六个)旋钮顺时针旋转1格,示数变为000722:

图片来源于网络

  第五个旋钮不动,第四个旋钮旋转9格,此时该旋钮超过一圈,指向数字6,而代表百位的第三个旋钮自动旋转一格,指向数字1,最终结果即001622:

图片来源于网络

  这一过程最关键的就是通过齿轮传动实现的自动进位。Rechenuhr使用单齿进位机构,通过在齿轮轴上增加一个小齿实现齿轮之间的传动。加法器内部的6个齿轮各有10个齿,分别表示0~9,当齿轮从指向数字9的角度转动到0时,轴上突出的小齿将与旁边代表更高位数的齿轮啮合,带动其旋转一格(36°)。

  减法就是逆时针旋转加法器的旋钮,单齿进位机构同样可以完成减法中的借位操作。除法需要在被除数上一遍又一遍不断地减去除数,自己记录减了多少次、剩余多少,分别就是商和余数。

  由于乘法器单独只能做多位数与一位数的乘法,加法器通常还需要配合乘法器完成多位数相乘。被乘数先与乘数的个位相乘,乘积置入加法器;再与乘数十位数相乘,乘积后补1个0加入加法器;再与百位数相乘,乘积后补2个0加入加法器;以此类推,最终在加法器上得到结果。

帕斯卡计算机(Pascal's calculator or Pascaline)

布莱士·帕斯卡(Blaise Pascal )法国数学家、物理学家、哲学家、散文家,国际单位制中压强的单位帕斯卡即以其姓氏命名。

  世界上第一台机械计算机被认为是帕斯卡计算机(Pascal's calculator or Pascaline)。 主要原因有三:1、契克卡德计算钟虽比帕斯卡计算机早20多年设计出来,但它的资料在沉默300多年后,直到1957年弗朗茨·哈默博士(Dr. Franz Hammer)才宣布了这张不被重视的计算钟图纸并挑战了机械计算机发明者不是帕斯卡(Blaise Pascal)而是契克卡德的事实。2、帕斯卡计算机与契克卡德计算钟的不同,说明了帕斯卡是独立发明而非受契克卡德的影响而设计的。3、契克卡德计算钟若按草图与当时的技术相结合,这台计算钟是不能正常工作的。故第一台机械计算机仍被认为是帕斯卡计算机,而机械计算机的发明者则仍是帕斯卡。

  科学家帕斯卡利用了齿轮啮合原理制造了十进制加法器,当齿轮旋转一周,10个齿中最长的齿会和更高位数的齿轮啮合实现进位。同样的道理,反过来旋转则是减法计算。但这一类进位机构有着一个很大的缺陷——齿轮传动的动力来自人手。同时进行一两个进位还好,若遇上连续进位的情况,你可以想象,如果999999+1,从最低位一直进到最高位,进位齿全部与高位齿轮啮合,齿轮旋转起来相当吃力。于是,帕斯卡将装置改造成借助重力进位的一种高级齿轮形式sautoir。

图片来源于网络

  sautoir这词来自法语sauter(意为“跳”)。这种装置在执行进位时,先由低位齿轮将sautoir抬起,而后掉落,sautoir上的爪子推动高位齿轮转动36°,整个过程sautoir就像荡秋千一样从一个齿轮“跳”到另一个齿轮。这种只有天才才能设计出来的装置被以后一百多年的许多机械师所称赞,而帕斯卡本人对自己的发明就相当满意,他号称使用sautoir进位机构,哪怕机器有一千位、一万位,都可以正常工作。连续进位时用到了多米诺骨效应,但是由于sautoir装置的存在,齿轮不能反转,每次使用前必须将每一位(注意是每一位)的齿轮转到9,而后末位加1用连续进位完成置零。

  既然sautoir装置导致齿轮无法反转,那么减法该怎么办呢?帕斯卡开创性地引入了沿用至今的补码思想。十进制下使用补九码,对于一位数,1的补九码就是8,2的补九码是7,以此类推,原数和补码之和为9即可。在n位数中,a的补九码就是n个9减去a,可以有以下推导过程:

图片来源于网络

  也就是说,a-b的补码等于a的补码加上b,减法转换成了加法。

  Pascaline在显示数字的同时也显示着其所对应的补九码,每个轮子身上一周分别印着9~0和0~9两行数字,下面一行该位上的表示原数,上面一行表示补码。当轮子转到位置7时,补码2自然显示在上面。

图片来源于网络

  帕斯卡加了一块可以上下移动的挡板,在进行加法运算时,挡住表示补码的上面一排数,进行减法时就挡住下面一排原数。

  这里主要说一说减法怎么做,以计算150723 - 2053为例,置零后将挡板移到下面,露出上面表示补码的那排数字:

图片来源于网络

  输入被减数150723的补码849276,上排窗口显示的就是被减数150723:

图片来源于网络

  加上被减数2053,实际加到了在下排的补码849276上,此时上排窗口最终显示的就是减法结果148670:

图片来源于网络

  本文主要讲解了早期计算机的一些简单实现,下一篇文章会讲到《现代计算机真正的鼻祖——差分机》,敬请期待。另外我在找资料的过程中发现已经有前人涉及这个议题了,写的相当详细,大家感兴趣可以看一下《改变世界:计算机发展史趣谈》。不过计算机的物理实现不是我的侧重点,所以很多地方会点到为止,最终还是得尽快回归到现代计算机的软件发展上。

引用:

  • http://blog.sina.com.cn/s/blog_5d6c51170102xu4z.html
  • https://zhuanlan.zhihu.com/p/56268805
  • https://blog.csdn.net/weixin_34138585/article/details/118848591
  • https://www.jianshu.com/p/4f69217a58f8?t=123
  • https://v.qq.com/x/page/d0875gbwcxv.html

不用电的计算机(一)相关推荐

  1. 不用电的计算机(二)

    转载请注明出处:https://www.cnblogs.com/morningli/p/16058594.html 上一篇讲到最早的计算机是什么样的,有人可能会不服气,咱们中国的算盘才应该是计算机的祖 ...

  2. 软件工程与计算II - 软件工程的发展

    02-软件工程的发展 1. 软件工程的三个环境因素 基础:抽象软件实体和虚拟计算机 目标:现实的问题 三个环境因素: 目标 正确性基础 实现基础 1.1. 现实 1.2. 抽象软件 1.3. 虚拟机 ...

  3. 第1章 JVM语言家族概览 《Kotin 编程思想·实战》

    第1章 JVM语言家族概览 天地和而万物生,阴阳接而变化起.<荀子·礼记> 1.1 编程语言简述 1.1.1 编程语言是什么 所谓编程语言只是一个抽象的规范,而编译器是这个规范的实现,它是 ...

  4. 《Spring Boot极简教程》附录3 编程简史

    附录3 编程简史 1940之前 提花织布机 1801,Joseph Marie Jacquard用打孔卡为一台织布机编写指令,在提花织布机(或称甲卡提花织布机,Jacquard loom)上,运用打孔 ...

  5. 计算机知识普及的策划,普及安全用电知识志愿者活动策划书

    第一篇:普及安全用电知识志愿者活动策划书 一.活动主题: 人人懂用电,岁岁享平安 二.活动背景: 现代社会,科技飞速发展,各种家用电器已经进入了我们的生活.但是每一年都会因为某些学生不安全用电而导致一 ...

  6. 计算机用电,37℃,37℃,37℃……超长高温天气下,这些家庭安全用电知识你要知道!...

    电力给人类带来了光明,给世界带来了动力,但对人的生命也带来了新的危险--触电.在这里,小编为大家准备了一份安全用电指南,介绍了在工作和生活中一些用电时的注意事项和防护措施,希望大家建立科学用电.安全用 ...

  7. 安全健康的使用计算机就要注意,家庭用电安全知识有哪些?了解一下?

    随着科学技术的发展和市民生活质量的提高,电视机.电冰箱.电饭锅.电吹风.电熨斗.电热毯等"电"字打头的电器和空调机.计算机.录像机.洗衣机等"机"字收尾的家用电 ...

  8. 小班安全使用计算机教案,小班教案安全用电

    一.活动目标1.了解安全使用电器的粗浅知识.2.有安全意识,知道电是危险的,小朋友不能玩.二.活动准备事先对要用到电的电器有一定的了解.三.活动过程1. 谈话引出课题:小朋友,我们一起来找一找,教室里 ...

  9. cos41度用计算机怎么算,用电监察计算(精品)

    <用电监察计算(精品)>由会员分享,可在线阅读,更多相关<用电监察计算(精品)(43页珍藏版)>请在人人文库网上搜索. 1.11-061_计算_用电监察员_全部81电力行业技能 ...

最新文章

  1. BackgroundSubtractorGMG 背景建模
  2. JavaScript中四种不同的属性检测方式比较
  3. windows下安装rabbitMQ教程(实战书写)
  4. 学习:多项式算法----FFT
  5. stdout字符串过滤输出
  6. python调用gpu进行运算_tensorflow指定CPU与GPU运算的方法实现
  7. 大龄技术人的出路在哪里?6月20日长沙-中国技术开放日邀请你一起探讨
  8. PDF组件 Aspose.Pdf V17.6发布 | 新增单元格文档旋转功能
  9. apktool反编译生成java_apktool反编译工具下载|apktool反编译工具 v3.0.1 最新版-520下载站...
  10. 微型计算机的输出有,微型计算机必不可少的输入/输出设备是()。 - 百科题库网...
  11. java-线程同步问题
  12. matlab单枝节匹配器,第八讲微带匹配电路单枝节匹配电路.ppt
  13. CSS3技巧:利用css3径向渐变做一张优惠券
  14. 解决:点击鼠标右键无新建选项卡
  15. pearson相关系数_SPSS相关性分析及相关系数计算方法(点二列相关系数)——【杏花开医学统计】...
  16. 站内文章被百度收录的方法
  17. 利用计算机进行导弹轨道计算,超级计算机为何被称为大国重器?可模拟核试验或测算弹道导弹轨迹!...
  18. 房屋租赁合同无效条件包括哪些
  19. MIPI DSI之DBI DPI含义和区别(3-1)
  20. python怎么重启内核_python怎么重启服务器

热门文章

  1. (面经总结)一篇文章带你完整复习 Java 中并发关键字(CountDownLatch/CyclicBarrier/Semaphore/Volatile)
  2. 荣品-i.MX6Q开发板 飞思卡尔iMX6Q开发板 工业级开发板
  3. Unity (游戏引擎)
  4. Java如何获取当前系统时间
  5. HashMap的链表结构
  6. 认认真真做事,勤勤恳恳做人
  7. Excel如何快速将图片插入到批注中?
  8. Python爬虫:抓取多级页面数据
  9. Instruments使用
  10. 元素节点,属性节点,文本节点,文档节点,分别的意思