文字的发明

文字是社会发展到一定阶段的产物。原始社会时期,人群、部落之间交流较少,有声语言已能满足需要。后来,随着社会生产的发展,人们的社会交际日趋频繁,而有声语言一发即逝,既不能传诸远方,亦不能留诸异日,用它作为传递思想信息的唯一手段,已越来越不能满足需要了。

在旧石器时代,社会组织和社会关系都很原始、很简单。人类社会的最基本的交际工具语言已经可以满足人们之间的交际需要了,不会发生创造文字的迫切要求。

到了新石器时代,社会组织逐渐复杂起来,生产范围也开始扩大,出现了初步的社会分工,交换也在这个基础上萌芽了;人口的”密集“也使社会生活大大”复杂“起来,氏族、部落间的联系和冲突也大大增加了。口耳相传的语言已经不完全适用了,人们产生了异时异地进行交际的要求。

文字正是应这种要求而诞生的。克服语言与时间、空间的矛盾,是当时社会遇到的社会性的问题,解决这个问题是全社会努力的结果。因此,文字是社会发展到特定阶段的社会需要的产物,也是全社会的发明。

各种各样的文字

不同国家,不同地区的人,他们的语言往往是不一样的,并且他们的文字也是各种各样的。近现代的世界文字,大概有5种最重要的文字系统:汉字、拉丁字母、斯拉夫字母、阿拉伯字母、印度字母。其中除了汉字是表意文字外,其余4种是表音文字,它们分别形成了五大文字流通圈。

汉字主要流通于东亚;拉丁字母占据美洲、大洋洲的全部,欧洲、非洲的大部分,亚洲的小部分;阿拉伯字母主要流通于北非、西亚的阿拉伯国家;斯拉夫字母主要流通于俄罗斯、白俄罗斯、乌克兰、保加利亚、塞尔维亚等国家;印度字母主要流通于南亚和东南亚。

各种各样的数字

虽然现代世界文字百花齐放,各种各样的文字都有其特殊性。对于数字来说,其种类虽然没有文字那么多,但也不少了,主要有:古埃及数字、罗马数字、玛雅数字、古印度数字(阿拉伯数字的前身)、阿拉伯数字、中文数字。目前还在使用的数字大概是以下这些:

古埃及数字

古埃及的数字系统是十进制的,他们有以下这些基础数字:

egypt-numbers.png

如果我想表达一个898的数字,则需要8个表示100的数字,9个表示10的数字,8个表示1的数字,加起来总共需要25个数字。用这么多数字表示一个比较大的数,这是非常可怕的,当数字越来越大时,所需要的基础数字也就越来越多。这种计数方式是非常复杂的,一方面是基础数字太多,另一方面是想表示一个数字时,需要画出所有的所需的基础数字。

罗马数字

罗马数字 没有进位制的概念,他没有表示零的数字。

rome-numbers.png

从上图中我们可以看出来,罗马数字中也是有一些基础数字的:

罗马数字 阿拉伯数字 罗马数字 阿拉伯数字
1 V 5
X 10 L 50
C 100 D 500
M 1000

大约在两千五百年前,罗马人还处在文化发展的初期,当时他们用手指作为计算工具。为了表示一、二、三、四个物体,就分别伸出一、二、三、四个手指;表示五个物体就伸出一只手;表示十个物体就伸出两只手。这种习惯人类一直沿用到今天。人们在交谈中,往往就是运用这样的手势来表示数字的。当时,罗马人为了记录这些数字,便在羊皮上画出Ⅰ、Ⅱ、Ⅲ来代替手指的数;要表示一只手时,就写成“Ⅴ”形,表示大指与食指张开的形状;表示两只手时,就画成“ⅤⅤ”形,后来又写成一只手向上,一只手向下的“Ⅹ”,这就是罗马数字的雏形。

rome-base-numbers.png

现在我们能在许多手表的表盘上看到罗马数字的身影:

rome-numbers-watch.png

玛雅数字

玛雅数字 是玛雅文明所使用的 二十进制 记数系统。

玛雅数字由3个符号的组合构成:0(贝形符号)、1(点)、5(横线)。

maya-numbers.png

小于等于19的数字,如19写作3根横线上另加4个点。

大于19的数字以20为进制累进。如30写作一个点(代表20),下面是一个贝形符号作为进制的标志,再下面加一个10(两道横线)。

特别是数系中“0”这个符号的发明和应用,无疑具有重要意义。前人栽树,后人乘凉,现代人均接受了玛雅人的独特创造,并称玛雅的数系为“人类最伟大的成就之一”。

阿拉伯数字

阿拉伯数字 的前身是印度数字,他是现今国际通用的数字。最初由 古印度人 发明,后由 阿拉伯人 传向欧洲,之后再经 欧洲人 将其现代化。正因阿拉伯人的传播,成为该种数字最终被国际通用的关键节点,所以人们称其为“阿拉伯数字”。阿拉伯数字由0,1,2,3,4,5,6,7,8,9共10个计数符号组成。采取位值法,高位在左,低位在右,从左往右书写。

公元3世纪,古印度的一位科学家 巴格达 发明了阿拉伯数字。最古的计数目大概至多到3,为了要设想“4”这个数字,就必须把2和2加起来,5是2+2+1,3这个数字是2+1得来的,大概较晚才出现了用手写的五指表示5这个数字和用双手的十指表示10这个数字。

两百年后,团结在伊斯兰教下的阿拉伯人征服了周围的民族,建立了东起印度,西从非洲到西班牙的阿拉伯帝国。后来,这个伊斯兰大帝国分裂成东、西两个国家。由于这两个国家的各代君王都奖励文化和艺术,所以两国的首都都非常繁荣,而其中特别繁华的是东都—巴格达,西来的希腊文化和东来的印度文化都汇集到这里来了。阿拉伯人将两种文化理解消化,从而创造了独特的阿拉伯文化。

大约700年前后,阿拉伯人征服了旁遮普地区,他们吃惊地发现:被征服地区的数学比他们先进。于是设法吸收这些数字。771年,印度北部的数学家被抓到了阿拉伯的巴格达,被迫给当地人传授新的数学符号和体系,以及印度式的计算方法(用的计算法)。由于印度数字和印度计数法既简单又方便,其优点远远超过了其他的计算法,阿拉伯的学者们很愿意学习这些先进知识,商人们也乐于采用这种方法去做生意。

后来,阿拉伯人把这种数字传入西班牙。公元10世纪,又由教皇 热尔贝·奥里亚克 传到欧洲其他国家。公元1200年左右,欧洲的学者正式采用了这些符号和体系。至13世纪,在意大利比萨的数学家 费婆拿契 的倡导下,普通欧洲人也开始采用阿拉伯数字,15世纪时这种现象已相当普遍。那时的阿拉伯数字的形状与现代的阿拉伯数字尚不完全相同,只是比较接近而已,为使它们变成今天的1、2、3、4、5、6、7、8、9、0的书写方式,又有许多数学家花费了不少心血。

巴格达发明的数字的演变图:

baghdad-numbers-evolution.png

阿拉伯数字演变史

最早人们用线条的多少来表示数字,但是当数字慢慢变多时,这种计数方式很不方便,画的线条会非常多。

arabic-numbers-evolution-1.png

就跟二进制一样,当要表示一个非常大的数字时,写出来的二进制会很长,所以迫切需要一种更先进的计数方式。

苏美尔人 发明了一种更先进的计数符号,但这些符号很复杂,估计科学家们都很难搞懂,并不适合日常的使用。

arabic-numbers-evolution-2.png

数学家 Abu Ja'far Muhammad ibn Musa AI-Khwarizmi (我晕,这名字真TM长,一看就是数学家)的出现,推动了数字发展的进程,进而推动了人类发展的进程。这个名字巨长的数学家(下面我们将简称他为 阿布 数学家),他需要做大量的演算,首先需要一套简单的计数符号。像上面 苏美尔人 发明的计数符号太复杂了,又是横着又是竖着,很可能一不小心就算错了。

为了解决自身的需求,阿布 教授发明了一套简单的计数符号,如下图所示:

arabic-numbers-evolution-3.png

从图中我们可以看出来有几个熟悉的身影:1、2、3、6、9。嘿嘿,跟我们现在的数字符号很接近,感觉有戏。

其实 阿布 教授想到的计数方法很简单,就是数每个符号上面角的个数。

arabic-numbers-evolution-4.png

可是我们现代数字中的4,明明不止4个角啊,有可能有5个甚至6个角,这怎么解释啊。

arabic-numbers-evolution-5.png

arabic-numbers-evolution-6.png

额,我没办法解释,在古人看来我们现代的4是错的,但是他现在就是这样了,我也没办法啊,我也管不了他。

arabic-numbers-evolution-7.png

5-10的符号要负责一点,需要借助一些辅助,在看之前,先画一条水平的线,横穿整个符号。

arabic-numbers-evolution-8.png

画完水平线之后,就把这些符号分成了两部分了,有的在水平线之上,有的在水平线之下。

那个圆圈,把他比作是一个握起来的拳头,而一个拳头是有5个手指吧,把他记作数字5很合理吧?

arabic-numbers-evolution-9.png

有了5之后,10就很自然而然的得到了,我把两个握紧的拳头举起来,超过水平线,就得到了10,哈哈,太机智了。

有了5和10之后,其他几个符号就很好创造了呀。5+1个角就是6,5+2个角就是7,相应的,10-1个角就是9,10-2个角就是8,完美!

arabic-numbers-evolution-10.png

arabic-numbers-evolution-11.png

后来为了书写方便,8的符号在水平线下方的两个直线也关闭起来了,就变成了现在8的样子。

arabic-numbers-evolution-12.png

5和7也慢慢的发生了变化,不过那条水平线一直伴随着他们。最终5只取了圆圈的右半部分,用来和6进行区分。

arabic-numbers-evolution-13.png

其中5的演变是这样的:

arabic-numbers-evolution-14.png

7的演变是这样的:

arabic-numbers-evolution-15.png

随着时间的推移,古代的数字从最初的样子慢慢的演变,最终成为了现代的模样:

arabic-numbers-evolution-16.png

arabic-numbers-evolution-17.png

进制的发明

进位制 (Positional notation),即用基数和基数的整数幂的和来表示数字的方法,是从 符值相加记数法 (Sign-value notation)演化而来的。

例如十进制中有10个基数,要计算整个数字的大小,需要从左往右计算每一位数字的值,然后将每一位上的数字的值相加后的和作为最终的结果。

在现代社会中,最常用的进制是十进制,但是我们仍然能看到很多其他的进制。十进制并不是一开始就确立了它的地位的。在阿拉伯数字成为国际计数符号之前,各国的计数方式中大量存在各种非十进制的计数系统。

列举一些常见的非十进制的应用:

应用场景 包含的进制
罗马数字 五进制 I,II,III,IV,V,VI
中国古代的算筹 五进制
算盘 五进制,十进制
唱票画的“正”字 五进制
计算机 二进制

计算机的发明

社会发展到另一个阶段产生了另一种伟大的发明:计算机。

世界上第一台电子数字式计算机于1946年2月15日在美国宾夕法尼亚大学正式投入运行,它的名称叫ENIAC(埃尼阿克),是电子数值积分计算机(The Electronic Numberical Intergrator and Computer)的缩写。

它使用了17468个真空电子管,耗电174千瓦,占地170平方米,重达30吨,每秒钟可进行5000次加法运算。虽然它的功能还比不上今天最普通的一台微型计算机,但在当时它已是运算速度的绝对冠军,并且其运算的精确度和准确度也是史无前例的。

以圆周率(π)的计算为例,中国的古代科学家 祖冲之 利用算筹,耗费15年心血,才把圆周率计算到小数点后7位数。一千多年后,英国人香克斯以毕生精力计算圆周率,才计算到小数点后707位。而使用ENIAC进行计算,仅用了40秒就达到了这个记录,还发现香克斯的计算中,第528位是错误的。

ENIAC奠定了电子计算机的发展基础,开辟了一个计算机科学技术的新纪元。有人将其称为人类第三次产业革命开始的标志。

ENIAC诞生后,数学家 冯•诺依曼 提出了重大的改进理论,主要有两点:

  • 一是电子计算机应该以二进制为运算基础

  • 二是电子计算机应采用存储程序方式工作

并且进一步明确指出了整个计算机的结构应由五个部分组成:运算器、控制器、存储器、输入装置和输出装置。

冯•诺依曼 的这些理论的提出,解决了计算机的运算自动化的问题和速度配合问题,对后来计算机的发展起到了决定性的作用。直至今天,绝大部分的计算机还是采用 冯•诺依曼 方式工作。

至今为止,计算机中都是使用的二进制。那么为什么要用二进制,而不是十进制呢。这要从计算机的物理层面考虑,因为计算机是用数字电路构成的,而数字电路基本的构成是逻辑门电路,我们知道逻辑门电路的理论基础是布尔运算,而布尔运算的结果只有两种。而电子元器件最容易确定的状态就是导通与断开,正好对应布尔中的true和false,从硬件的角度看就是,电信号在0-2伏低电压用来表示0,2-5伏高电压用来表示1。所以这些都决定了计算机使用二进制,而不是十进制或者八进制。

其实八进制或十六进制也只是为了我们人类的方便而采用的,在C/C++的代码中不能直接写二进制,而是采用八进制或十六进制。可是为什么是八进制或十六进制呢?因为8或16都是2的次方,他们之间可以直接进行转换,并且通过左移右移的方式就可以快速转换。

本文转载自「逅羿逐码」,欢迎关注

文字与编码的奥妙(上篇) 1相关推荐

  1. 分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view

    分析:windows下cmd默认的编码是ASCII编码 ,windows的中文环境下编码是GBK 方法一:在保存输出流保存的时候做一个对文字GBK编码,在输出到文件 如下 [python] view ...

  2. html文本编码声明,黑帽seo技术之文字HTML编码变体的实现解密

    由于跟上一篇文章有的手段接近,因此这里就一起写的话比较容易理解.我们先来上图: 可以看到,跟昨天差不多的黑帽关键词哈,这次用搜狗的,因为目前搜狗对这类站点似乎比较友好?这都不是重点,这几个站看起来像是 ...

  3. PDF格式分析(六十七) Text 文字——字符编码( Character Encoding)

    字体编码是字符代码和字形描述之间的关联关系,对于程序员来说,字符编码非常熟悉,经常遇到的乱码问题,基本上都是字符编码不正确造成的. 本章节将描述用于简单PDF字体的字符编码方案.复合字体(Type 0 ...

  4. 自动识别文字的编码以及读取所有文本——VB2005

    在VB2005中,读取文本文件中的文本可以采用的方法是System.IO.File.ReadAllText,这个函数有两个参数,一个是文件的文件名(包含路径):一个是文本的编码,如果省略,采用系统默认 ...

  5. php 文字 url编码,如何实现php中文转url编码

    如何实现php中文转url编码 发布时间:2020-08-07 10:10:03 来源:亿速云 阅读:65 作者:Leah 如何实现php中文转url编码?相信很多没有经验的人对此束手无策,为此本文总 ...

  6. 中日文字编码转换_全网最全面、全详细的编码、解码知识!!!

      温馨提示:  本文大约4282字,阅读完大概需要3-5分钟,希望您能耐心看完,倘若你对该知识点已经比较熟悉,你可以直接通过目录跳转到你感兴趣的地方,希望阅读本文能够对您有所帮助,如果阅读过程中有什 ...

  7. 中日韩大字符集文字编码的比较研究

    http://www.yyxx.sdu.edu.cn/content/guojihuiyi/guojhy-yinbs.htm 中日韩大字符集文字编码的比较研究 尹宝生 潘峰 徐立军 年新 汤蓉 沈阳航 ...

  8. Java学习笔记·Servlet parameter参数传递utf-8文字编码正常显示

    传递parameter时,正常显示各种语言文字的编码 首先设置tomcat的uriencoding为iso-8859-1(tomcat配置文件里的server.xml) <Connector U ...

  9. java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**

    原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)-–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...

最新文章

  1. Android开发之自定义Notification(源代码分享)
  2. select选择框实现跳转
  3. raid1 热备盘 linux,Centos 6.5 RAID1加热备盘
  4. 厉害了,3万字的MySQL精华总结 + 面试100问!
  5. WPF 自定义命令 以及 命令的启用与禁用
  6. css3+js打造炫酷图片展示
  7. FreeSwitch Event Socket Command(事件套接字命令行)
  8. atitit.html5动画特效----打水漂 ducks_and_drakes
  9. git fatal: Authentication failed for ‘https://gitee.com
  10. 锁定计算机后怎么解锁,电脑锁住了怎么解锁
  11. 2020京东双十一【全民营业,瓜分十亿】自动做任务软件
  12. Incompatible pointer types assigning to ‘id<PHPickerViewControllerDelegate> _Nullable‘ from ‘Class‘
  13. 分布式文件存储系统MinIO入门教程
  14. 新手必看!如何在windows下安装Python(Python入门教程)
  15. JAVA continue 用法
  16. 数藏拐点已至,未来行业破局靠什么?
  17. 根本解决Python2中unicode编码问题
  18. Dundas Chart for .NET 控件的简单使用
  19. 成王败寇,回顾2014年10大互联网战役
  20. 安卓 linux 信令,呼叫信令

热门文章

  1. outlook邮件中样式问题
  2. ziRail 0.71 for Maya2018-2020,maya拓扑的神兵利器
  3. Hitachi Vantara老兵新传
  4. 鸡舍养殖环控系统简介
  5. mysql各存储引擎的作用:Archive、Blackhole、CSV、Memory、Federated、Merge、NDB
  6. 笔记:矩阵行列式求导以及矩阵的逆的求导
  7. JCF 集合框架小结
  8. 【初识mac】安装cmake编译的小问题
  9. 美国银行、摩根大通禁止使用信用卡购买加密货币
  10. C# 实现简易QQ界面