科学计算器怎么进行进制转换(从算盘到计算机)

从整个人类的发展史上看,我们的科技和生产力是以加速度的规律发展的。尤其是最近的一百多年时间里,我们的加速度得到了前所未有的提升。在70万年以前,周口店的“北京人”就已经会使用火了。在大约10万年前,还是这片区域,山顶洞人已经能够制作一些石器和装饰品。在1953年西安的半坡村发现了一处古代母系氏族的遗址,其距今为5600~6700年。从出土的陶器上发现了22种可能是用来计数的符号。

科学计算器怎么进行进制转换(从算盘到计算机)(1)

牛顿在300多年前提出的牛顿力学依然是我们现在解释宏观世界物理现象的基础理论。随着《自然哲学之数学原理》的出版,开启了现代科学飞速发展的时代。1873年的麦克斯韦发表了《电磁论》一书,奠定了完整的电磁理论才不多100多年。技术的飞速发展还体现在了我们现在强大的运算能力。

科学计算器怎么进行进制转换(从算盘到计算机)(2)

艾萨克·牛顿

我们先来思考这样一个问题,从人类出现在地球上开始,直到现在,整个人类史进行了多少次算术运算?(算术运算指的是加、减、乘、除、开平方、开立方、求三角函数、解微分方程等。)当然,谁都不能统计出精确的值,我们只需要算出一个估算值即可。

科学计算器怎么进行进制转换(从算盘到计算机)(3)

我们在古埃及发现了公元前3000~前2500年的象形数码,而我国的甲骨文中也出现过数字符号,这迄今为止也至少有4000年的岁月。所以我们可以认为人类进行算术运算的历史不超过5000年。

科学计算器怎么进行进制转换(从算盘到计算机)(4)

殷墟发现的甲骨文

假设每个人每天会进行100次算术运算,那么每个人每年就会计算36500次。那么我们需要计算全球的人数,全球的人数在过去的几千年里由于技术原因和战争原因,一直缓慢增长,直到最近200年,数量上才突飞猛进的。在1804年全球人口总数才打到10亿,到现在已经发展到了70亿人口。我们可以认为5000年以来,平均每天会有0.5亿人进行算术运算。我们不难得出:5000*365*100*0.5*10^8=10^16

科学计算器怎么进行进制转换(从算盘到计算机)(5)

天河一号超级计算机

我们得出的这个估算值应该比实际值大很多,虽然它看起来是一个很大的数。但是跟现代科学遇到的大数相比简直不值得一提。这个数只能估算到1943年,因为电子计算机的出现,使人类的计算能力有了一次质变,现在我们一秒钟的计算次数就远远超过了10^16次。

曼哈顿计划和卡片计算机

1939年爱因斯坦写信给当时的美国总统罗斯福,他建议罗斯福重视原子武器的研究工作。随后罗斯福拨款6000美元,“曼哈顿计划”从此正式开展。曼哈顿计划集合了当时世界上最优秀的一批数学家、物理学奖和工程师。在前期理论计算工作中,他们估算出他们所面临的计算量要比人类有史以来全部的计算量还要多。这使得他们的研究陷入了困境,直到他们想起了IBM公司生产的卡片计算机。

科学计算器怎么进行进制转换(从算盘到计算机)(6)

参与“曼哈顿计划”的部分科学家

19世纪50年代之后,美国的外来移民数量大幅增长,需要每10年做一次人口普查。1880年人口普查的数据,人工处理了7年,也就是直到1887年才得出结果。而1890年又会进行一次新的人口普查,这时人们意识到,随着人口的增加,也许这次直到1900年也未必会处理完1890年统计的数据。在这种情况下,纽约州布法罗城的统计员赫勒里斯发明了卡片计算机。虽然1890年的人口数量比1880年时多了1200万,但借助于卡片计算机,仅仅用了两年多就处理完毕了。

科学计算器怎么进行进制转换(从算盘到计算机)(7)

穿孔卡

卡片计算机是一种复杂的电机械设备。它与现在的计算机不同,它只能执行“固定程序”的计算。使用它之前需要将需要计算的数据穿在卡片上,效率低下。经过多次改进,后来形成了“卡片程序计算机”,这时它能运行“外部程序”了,它不仅能把数据穿在卡片上,还能把“程序”也穿在卡片上。

科学计算器怎么进行进制转换(从算盘到计算机)(8)

其实我们身边有很多种外部程序控制的机器设备。例如,用来编织各种纺织物的机器。它们通过穿孔纸带上不同的数据,编织出不同图案的纺织物。

由于卡片机的使用成本比较高,通常IBM公司会给租用卡片机的客户配备技术人员,协助安装与调试,使其能够正常工作。当时曼哈顿计划的领导人向IBM公司租用了一台卡片计算机,并从欧洲调回了一位合乎保密要求的技术人员来调试该机器。但是当这位技术人员千里迢迢赶到机房时吃惊的发现,这台使用复杂的机器已经正常运转起来了。原来是几位年轻的理论物理学家,包括后来得了诺贝尔奖的理查德·费曼,已经根据说明书自己动手开箱安装完成了。其中有几位年轻的物理学家对这台机器产生了浓厚的兴趣,他们为后来计算物理学的发展做出了巨大的贡献。

科学计算器怎么进行进制转换(从算盘到计算机)(9)

理查德·费曼

卡片计算机能够在7秒内完成一次乘法。以这个速度应对曼哈顿计划还是太慢了,所以只能同时使用大量的计算设备。数学家冯·诺依曼也参与了曼哈顿计划,他看到了用数值方法解决重大实际问题的前景,但是速度却有限,他极度迫切的想要提高当时的计算速度。要想提高计算速度,首先要明确是什么限制了当时的计算速度。

影响计算速度的原因

人类也做过多次手工计算大规模数据的工作,比如大地三角测量和天文测量数据的处理。大数学家高斯花费了10年时间去完成汉诺威王国的大地测量,他曾用几天时间求解一个包含55个未知数和300个条件方程的最小二乘法计算。如果测量更广大的区域,那么未知数和条件方程就会更多,使计算的时间变的越来越长。

科学计算器怎么进行进制转换(从算盘到计算机)(10)

数学王子——高斯

这种情况下,数学家通常会把这些重复但是耗时的计算交给一批计算员去做。计算员的工作分为以下几个步骤:

  1. 首先设计一张纵横表,它反映出每一步基本运算的过程和得出最终结果的顺序,以及保证结果的检验方法。
  2. 然后把数据填入表中列和行的相应位置上。
  3. 按照行和列依次计算结果。例如:把第一行的每个数求余弦填入第三行,把第二行的每个数求立方填入第四行,再把第三行的每个数除以第四行相应的数填入第五行,等等类似的操作。

人们总结出了大规模结算过程中的大致流程。

  1. 要有一张表格记录着原始数据、计算过程中的数据和计算的结果。它起到了“存储器”的作用,也记录了计算过程。
  2. 具体的两个数的求值过程,比如上个例子中两个数相除可以用算盘和手摇计算器。这些工具就是“运算器”。
  3. 上例中计算员在计算求余弦和立方时要查阅相关的数学用表,例如《巴罗表》。这其实是一种数据库,它保存着已经计算的大量数据,不用重复计算,结果直接查表可得,提高效率。
  4. 计算员的执行步骤,他从表中读取数据,经过2、3步后将结果写入表格的相应位置,计算员充当起了“中央控制器”的作用。

科学计算器怎么进行进制转换(从算盘到计算机)(11)

手摇计算器

从这些流程可以看出,要想提高计算速度,就要提高每一步骤的速度。仅仅提高一个步骤的速度,效果甚微。比如把算盘或者手摇计算器换成当今的电子计算器,虽然完成求余弦和立方的计算时间大大缩短了,但整个计算过程还是很慢。这个问题还存在今天的计算机,现在的计算机CPU的计算速度远远快于内存的读写速度。要想提高所有流程的速度,首先就要实现自动的逻辑控制。否则每一步骤的速度很快,但是每个步骤间的流程控制很慢也是于事无补的。所以我们要做到一旦计算开始,就要避开一切人为干预,直到自动运算出最终结果。

数的进制和存储

既然要做到机器全部自动运算,那么首先要解决的问题就是如何用机械或者电气元件来保存数据。

我们在小时候学习计数时,都是掰着手指进行计数,所以熟练使用十进制已经深深刻在了我们的脑海里。其实还存在一种更简单直接的进制,那就是反映“有无”、“正负”、“高低”、“真假”这种关系的二进制。二进制是一种简单的方式,因为任何一个具有两种状态的物理过程,都可以用“有”和“无”,或者1和0来表示。把1和0组合起来可以表示我们熟知10进制的任何数。例如,从0到16的十进制数用二进制写出来就是:

0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000

二进制是很容易理解的数制,十进制乘法里的“九九表”,在二进制中只剩下“一零得零,一一得一”两句口诀。

二进制在一个位置上用0和1两个符号实现0和1两个数。如果在两个位置上各用0和1两个符号实现0,1,2,3四个数,就构成了四进制。八进制则用三位二进制数,实现0,1,2,3,4,5,6,7八个数。同理,用四位二进制可以实现十六进制,不过这时普通的数码不够用了,要以A,B,C,D,E,F来分别代表10,11,12,13,14,15。

二进制:10000=2^4=16

四进制:10000=4^4=256

八进制:10000=8^4=4096

十六进制:10000=16^4=65536

任何进制都可以翻译成十进制,例如

10201=10000 2*100 1=3^4 2*3^2 1=100

最早用二进制组合出四进制和八进制的记载,应当认为是我国传说中的“伏羲八卦图”。伏羲用“—”和“--”两种符号拼成了八卦。

科学计算器怎么进行进制转换(从算盘到计算机)(12)

伏羲八卦图

这么多进制方式,我们应该选取哪种方式呢?用三位十进制能表示数的个数是10^3-1=999,而用三位二进制能表示111=2^3-1=7个数字。同理,用n位k进制能表达数字的个数是:k^n-1

假设每一位上的k进制数码0,1,2,3···k-1都各要用一个“状态”来实现,而且n位k进制寄存器的成本c正比于状态的总数kn。要求以成本c=kn最小,而所能表示数字最多个数=k^n-1=为指定常数,来确定k的值。这是带一个“约束条件”的优化问题,它很容易求解。把成本对k微分,应有

科学计算器怎么进行进制转换(从算盘到计算机)(13)

再对约束条件微分,求得

科学计算器怎么进行进制转换(从算盘到计算机)(14)

代入前面的式子,得到决定k的关系式

科学计算器怎么进行进制转换(从算盘到计算机)(15)

即k等于自然对数的底e=2.71828··· 最接近e的整数是3,于是三进制应该是最优选择。但是具有三个状态的元件必须专门设计,能给出两个状态的物理效应比比皆是。2是最接近e的另一个整数,这是使用二进制是另一个大理由。

现在二进制广泛应用在我们身边的各种计算机中,可以说现在我们的世界一秒钟都不能离开对二进制的依赖。正是二进制的高效,才会有今天更加强大的计算能力。

(部分图片来源于网络,如有侵权请及时联系删除)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页