返回

计算机基础

随着时代发展,计算机使用已经成为每个人的必备能力,但是对于计算机的起源并不是每个人都知道。大家都是站在巨人的肩膀,享受着这丰富的科技成果。今天我分享一篇关于计算机的基础知识,自己学习了一遍觉得通俗易懂,所以记录一下。

原文参考

本文只是截取了一部分,更多内容推荐上面的链接地址进行查看。

目录

起源

公认最早的计算设备是算盘,它是手动计算器,用来帮助加减数字,而后在接下来 4000 年,人类发明了各种巧妙的计算设备,比如星盘,让船只可以在海上计算纬度,或计算尺,帮助计算乘法和除法,人们还创造了上百种时钟,这些设备让原先很费力的事变得更快,更简单,更精确. 最早使用 “计算机” 一词来自 1613 年的一本书,指的不是机器,而是一种职业,这个职位一直到 1800 年代还存在.

最开始发明出来的是步进计算器,由德国博学家 戈特弗里德·莱布尼茨 建造于 1694 年,利用一些巧妙的机械结构,可以实现加减乘除,但是效率太低,一个运算结果需要登上几个小时,虽然后续进行优化,提升效率,但是任何会动的机械都会随时间磨损,这些巨大,黑色,温暖的机器也会吸引昆虫,1947年9月,哈佛马克2型的操作员从故障继电器中,拔出一只死虫,从那时起,每当电脑出了问题,我们就说它出了 bug(虫子).

热电子管

为了进一步提高计算能力,我们需要更快我们需要更快更可靠的东西.在 1904 年,英国物理学家 “约翰·安布罗斯·弗莱明”,开发了一种新的电子组件,叫”热电子管”。这是世界上第一个真空管.其原理是把两个电极装在一个气密的玻璃灯泡里,其中一个电极可以加热,从而发射电子这叫 “热电子发射”,另一个电极会吸引电子,形成”电龙头”的电流,但只有带正电才行,如果带负电荷或中性电荷,电子就没办法被吸引,越过真空区域,因此没有电流。

不久之后在 1906 年,美国发明家 “李·德富雷斯特”,他在”弗莱明”设计的两个电极之间,加入了第三个 “控制” 电极,向”控制”电极施加正电荷,它会允许电子流动,但如果施加负电荷,它会阻止电子流动,因此通过控制线路,可以断开或闭合电路,但重要的是,真空管内没有会动的组件,这意味着更少的磨损,更重要的是,每秒可以开闭数千次。

因此这些”三极真空管”成为了无线电,长途电话以及其他电子设备的基础,持续了接近半个世纪。但是它太过于脆弱,并且像灯泡一样会烧坏。

晶体管

1947 年,贝尔实验室科学家 John Bardeen,Walter Brattain,William Shockley发明了晶体管,一个全新的计算机时代诞生了!

晶体管的物理学相当复杂,牵扯到量子力学,晶体管就像”真空管”,它是一个开关,可以用控制线路来控制开或关,晶体管有两个电极, 电极之间有一种材料隔开它们,这种材料有时候导电,有时候不导电,这叫”半导体”,控制线连到一个电极,通过改变它的电荷,我们可以控制半导体材料的导电性。每秒可以开关 10,000 次。晶体管可以远远小于真空管,导致更小更便宜的计算机,比如1957年发布的IBM 608,第一个完全用晶体管,而且消费者也可以买到的计算机,它有 3000 个晶体管,每秒执行 4500 次加法。如今计算机里的晶体管小于 50 纳米,而一张纸的厚度大概是 10 万纳米。每秒可以切换上百万次,并且能工作几十年.

很多晶体管和半导体的开发在”圣克拉拉谷”,这个地方在加州,位于”旧金山”和”圣荷西”之间,而生产半导体最常见的材料是 “硅”,所以这个地区被称为 “硅谷”。

甚至 William Shockley 都搬了过去,创立了”肖克利半导体”,里面的员工后来成立了”仙童半导体”,这里面的员工后来创立了英特尔,当今世界上最大的计算机芯片制造商。

二进制

只用 开/关 两种状态也可以代表信息,意思是”用两种状态表示”。一些早期电子计算机是三进制的,有 3 种状态,甚至五进制,5 种状态。问题是,状态越多,越难区分信号,如果手机快没电了或者附近有电噪音,因为有人在用微波炉,信号可能会混在一起,而每秒百万次变化的晶体管会让这个问题变得更糟!只用”开”和”关”两种状态,可以尽可能减少这类问题。

计算机用二进制的另一个原因是,有一整个数学分支存在,专门处理”真”和”假”,它已经解决了所有法则和运算,叫”布尔代数”!但在布尔代数中,变量的值是 true 和 false, 能进行逻辑操作,布尔代数中有三个基本操作:NOT, AND 和 OR,用晶体管可以轻松实现这个逻辑。

晶体管只是电控制的开关,有 3 根线:2 根电极和 1 根控制线,控制线通电时电流就可以从一个电极流到另一个电极。可以把控制线,当做输入 ( input ) 底部的电极,当做输出(output)所以 1 个晶体管,有一个输入和一个输出。

计算

但如果只有两个值,我们怎么表达更多东西?我们有 1 和 0如果想表示更多东西,加位数就行了。和我们熟悉的十进制一样,十进制只有 10 个数(0到9),要表示大于 9 的数,加位数就行了。如果超过 9,要在下一列进 1.因此叫 “基于十的表示法” 或十进制。二进制也一样,只不过是基于 2 而已。因为二进制只有两个可能的数, 1 和 0,意味着每个乘数必须是右侧乘数的两倍,就不是之前的 100, 10, 1 而是 4, 2, 1。

例如二进制数 101: 意味着有 1 个 “4” 0 个 “2” 1 个 “1”
其计算结果实际是: 4 + 0 + 1 = 5, 加在一起,得到十进制的 5

例如二进制数 10110111:
1 x 128 ,0 x 64 ,1 x 32 ,1 x 16, 0 x 8 ,1 x 4 ,1 x 2 ,1 x 1 = 183。

上个例子我们用了 8 位 , 8 位能表示的最小数是 0, 8位都是0,最大数是 255,8 位都是 1,即 11111111 = 255. 255 加上最小数 0,即 8 位二进制能表示 256 个不同的值,就是 2 的 8 次方。

你可能听过 8 位机,8 位图像,8 位音乐,意思是计算机里大部分操作都是 8 位 8 位这样处理的。8 位是如此常见,以至于有专门的名字:字节。1 字节 = 8 位 1 bytes = 8 bits。如果有 10 个字节,意味着有 80 位,你听过 千字节(kb)兆字节(mb)千兆字节(gb)1 千字节 = 1000 字节或 8000 位,Mega 是百万字节(MB), Giga 是十亿字节(GB),如今你可能有 1 TB 的硬盘,8 万亿个1和0。二进制里,1 千字节 = 2的10次方 = 1024 字节,1000 也是千字节(KB)的正确单位,1000 和 1024 都对。你可能听过 32 位 或 64 位计算机你现在用的电脑肯定是其中一种意思是一块块处理数据,每块是 32 位或 64 位,32 位能表示的最大数,是 43 亿左右。

浮点数

计算机必须给内存中每一个位置,做一个 “标记”,这个标记叫 “地址”, 目的是为了方便存取数据,如今硬盘已经增长到 GB 和 TB,上万亿个字节!除了负数和正数,计算机也要处理非整数,比如 12.7 和 3.14,这叫 浮点数。它用类似科学计数法的方法,来存十进制值,例如,625.9 可以写成 0.6259×10 ^ 3,这里有两个重要数字:.6259 叫 “有效位数” , 3 是指数,在 32 位浮点数中:

第 1 位表示数字的正负,接下来 8 位存指数,剩下 23 位存有效位数

文字编码

表示文字与其用特殊方式来表示字母,计算机可以用数字表示字母,最直接的方法是给字母编号:A是1,B是2,C是3,以此类推。ASCII,美国信息交换标准代码,发明于 1963 年,ASCII 是 7 位代码,足够存 128 个不同值,范围扩大之后,可以表示大写字母,小写字母,数字 0 到 9, @ 这样的符号, 以及标点符号,举例:小写字母 a 用数字 97 表示,大写字母 A 是 65,ASCII 甚至有特殊命令符号,比如换行符,用来告诉计算机换行。

因为 ASCII 是个很早的标准,所以它被广泛使用,让不同公司制作的计算机,能互相交换数据,这种通用交换信息的能力叫 “互用性”,但有个限制:它是为英语设计的。幸运的是,一个字节有8位,而不是7位,128 到 255 的字符渐渐变得常用,这些字符以前是空的,是给各个国家自己 “保留使用的”,在俄罗斯,他们用这些额外的字符表示西里尔字符,这些保留下来给每个国家自己安排的空位,对大部分国家都够用。

问题来了,如果不同国家互相传递信息则会显示乱码,随着计算机在亚洲兴起,这种做法彻底失效了,中文和日文这样的语言有数千个字符,根本没办法用 8 位来表示所有字符!为了解决这个问题,每个国家都发明了多字节编码方案,但不相互兼容,所以 Unicode 诞生了 - 统一所有编码的标准,设计于 1992 年,解决了不同国家不同标准的问题,最常见的 Unicode 是 16 位的,有超过一百万个位置,对所有语言的每个字符都够了,还有位置放数学符号,甚至 Emoji,就像 ASCII 用二进制来表示字母一样,其他格式 - 比如 MP3 或 GIF,用二进制编码声音/颜色,表示照片,电影,音乐,短信,视频,互联网每个网页甚至包括操作系统,只不过是一长串 1 和 0 .

超级计算机

最终你会发现让手机,电脑这些能够运行复杂的程序,能够显示绚丽的颜色,其底层居然只有 0 和 1,这是人类多么伟大的成就。当然科技技术仍在不断突破中.

截止到2018年4月9号,世界上运算速度最快的超级计算机是Summit(译为高峰或顶点超级计算机),其合作伙伴是IBM和英伟达(nVIDIA),Summit由IBM在英伟达帮助下为ORNL开发,耗资约2亿美元,占地面积相当于两个网球场。它的峰值运算性能为200PFlops,即每秒执行20亿亿次浮点运算,将是其“同门师兄”、此前美国排名第一位超级计算机——同属ORNL旗下Titan的八倍。位居第二的是在中国无锡的国家超算中心,名为神威·太湖之光超级计算机,神威·太湖之光超级计算机安装了40960个中国自主研发的“申威26010”众核处理器,该众核处理器采用64位自主申威指令系统,峰值性能为12.5亿亿次/秒,持续性能为9.3亿亿次/秒。

这些超级计算机目前也只是不断在突破,相关指数只是在理论上指导,目前还没有相关对应的使用场景,如果你拿来玩一把王者荣耀或荒野求生其实它和你普通手机电脑运行一样。

更多内容请查看