二进制

维基百科,自由的百科全书
跳转至: 导航搜索
记数系统
印度-阿拉伯数字系统
西方阿拉伯数字
阿拉伯文数字
高棉數字
印度數字
波羅米數字
泰语数字
汉字文化圈記數系統
中文数字
閩南語數字
越南语数字
算筹
日語數字
朝鲜文数字
苏州码子
字母記數系統
阿拉伯字母數字
亞美尼亞數字
西里爾數字
吉茲數字
希伯來數字
希腊数字
阿利耶波多數字
其它記數系統
雅典數字
巴比倫數字
古埃及數字
伊特拉斯坎數字
玛雅数字
罗马数字
底数区分的进位制系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 20 60 64

数学数字电路中,二进制binary)数是指用二进制记数系统,即以2为基数的记数系统表示的数字。这一系统中,数通常用两个不同的符号0(代表零)和1(代表一)来表示。以2为基数代表系统是二进位制的。数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制。每个数字称为一个比特(二进制位)。

歷史[编辑]

现代的二进制记数系统由戈特弗里德·莱布尼茨于1679年设计,在他1703年发表的文章《论只使用符号0和1的二进制算术,兼论其用途及它赋予伏羲所使用的古老图形的意义》(法语:Explication de l'arithmétique binaire, qui se sert des seuls caractères 0 et 1 avec des remarques sur son utilité et sur ce qu'elle donne le sens des anciennes figures chinoises de Fohy)出现。与二进制数相关的系统在一些更早的文化中也有出现,包括古埃及古代中国古印度。中国的《易经》尤其引起了莱布尼茨的联想。

 

荷鲁斯之眼各部分所代表的算术值

埃及[编辑]

古埃及的计数员使用两种不同的系统表示分数,一是埃及分数(与二进制记数系统无关),二是荷鲁斯之眼分数(叫这个名字是因为很多数学史家相信这个系统所采用的符号可以排列成荷鲁斯之眼,但这一点有争议)。荷鲁斯之眼分数是用来表示分数数量的谷物、液体等的二进制记数系统,在这一系统下,以赫卡特为单位的分数值表示成1/2、1/4、1/8、1/16、1/32和1/64等二进制分数的和。 这一系统的早期形式可以在埃及第五王朝(约公元前2400年)的档案中找到,而发展完备的象形文字形式可追溯到埃及第十九王朝(约公元前1200年)。 古埃及做乘法的方式也与二进制数密切相关,约公元前1650年的莱因德数学纸草书中就能看到。这一计算方法中,要把1和乘数不断翻倍,按被乘数的二进制表示从左列选出相应的2的幂次,并将右列的数相加。[1]

中国[编辑]

道教八卦图

《易经》的历史可以追溯到公元前9世纪,其中的二进制记号是用来解释其四进制占卜技术的。 它基于道的阴阳二重性。八卦和一种64卦早在古代中国的周朝就被使用了,而它们分别与三位与六位二进制数字类似。 北宋学者邵雍用一种与现代二进制数字类似的形式重新排列了卦象,不过并不是为了数学应用。在邵雍方阵中,把实线看作1、断线看作0,从右下到左上浏览,那么卦象实际上就是0到63的二进制。

印度[编辑]

印度学者平甲拉(公元前两世纪左右) 通过二进制方法来研究韵律诗。他的二进制中用到的是长短音节(一个长音节相当于两个短音节),有些像摩尔斯电码。与西方的位置表示法不同,平甲拉的系统中,二进制是从右往左书写的。

莱布尼茨前的西方先驱[编辑]

1605年,弗朗西斯·培根提出了一套系统,可以把26个字母化为二进制数。此外他补充道,这个思路可以用于任何事物:“只要这些事物的差异是简单对立的,比如铃铛和喇叭,灯光和手电筒,以及火枪和类似武器的射击声”。这对二进制编码的一般理论有重要意义。(参见培根密码

莱布尼茨和《易经》[编辑]

戈特弗里德·莱布尼兹

莱布尼茨关于二进制的论文全名是《论只使用符号0和1的二进制算术,兼论其用途及它赋予伏羲所使用的古老图形的意义》(1703年)。类似于现代二进制计数系统,莱布尼兹的系统使用0和1。下面是莱布尼兹的二进制记数系统的一个例子:

 0 0 0 1 数值为
 0 0 1 0 数值为
 0 1 0 0 数值为
 1 0 0 0 数值为

莱布尼兹认为易经中的卦象与二进制算术密不可分。莱布尼兹解读了易经中的卦象,并认为这是其作为二进制算术的证据。作为亲华派,莱布尼兹关注易经,并饶有兴致地注意到它的卦象与从0到111111的二进制数字有某种对应,并认为这种对应反映了中国的重大成就中展现的他所崇尚的数学哲学。莱布尼兹首次接触到易经是在与法国耶稣会传教士白晋的联系中。白晋1685年作为传教士前往中国。 长期以来,人们对莱布尼茨发明二进制是否受到了伏羲八卦的影响争议颇多。认为莱布尼茨未受伏羲八卦影响独立发明二进制的理由主要是莱布尼茨在1679年(与白晋首次通信的二十多年)就撰写了“二的级数”(De Progressione Dyadica)一文;而目前有学者倾向于认为莱布尼茨二进制的体系确源于伏羲八卦图,原因在于1687年莱布尼茨看过柏应理[2]的《这个哲学家孔子》,书中便有伏羲八卦次序图、方位图和周文王六十四卦图。此外,莱布尼茨还阅读过1660年斯比赛尔出版的《中国文史评析》,其中亦有对《易经》和八卦的介绍。[3] 此外,莱布尼兹认为易经的卦象肯定了他所信仰的基督教的共相[4]一切数都可以用0和1创造出来,在莱布尼兹看来,这正象征了基督教《圣经》所说的上帝从“无”创造“有”(creatio ex nihilo)。

(有一个概念)不容易传授给异教徒:全能的上帝从无创造有。现在我们可以说,数字的起源是世上能最好展示和说明这种力量的事物,它以“一”和“零”或者说“无”的形式呈现,既朴素又简练。

——莱布尼茨写给鲁道夫·奥古斯都公爵的信[4]

后来的发展[编辑]

乔治·布尔

1854年,英国数学家乔治·布尔发表了一篇里程碑式的论文,其中详细介绍了一种代数化的逻辑系统,后人称之为布尔代数。他提出的逻辑演算在后来的电子电路设计中起基础性作用。[5]

1937年,克劳德·香农麻省理工大学完成了其电气工程硕士学位论文,用继电器和开关实现了布尔代数和二进制算术运算。论文题为《继电器与开关电路的符号分析》(A Symbolic Analysis of Relay and Switching Circuits)[6],其中香农的理论奠定了数字电路的理论基础。香农凭这篇论文于1940年被授予美国阿尔弗雷德·诺贝尔协会美国工程师奖。哈佛大学的哈沃德·加德纳称,香农的硕士论文“可能是本世纪最重要、最著名的硕士学位论文”。

1937年11月,任职于贝尔实验室的乔治·斯蒂比兹[7]发明了用继电器表示二进制的装置。它是第一台二进制电子计算机。

运算规则[编辑]

四则运算[编辑]

  • 加法:00+00=00,00+01=01,01+00=01,01+01=10
  • 减法:0-0=0,1-0=1,1-1=0,10-1=01
  • 乘法:0×0=0,0×1=0,1×0=0,1×1=1
  • 除法:0÷1=0,1÷1=1

拈加法[编辑]

二進制的有一種特殊的算法,稱為拈加法。進行拈加法時,與進行加法無異,只是不需進行進位,在博弈论中被廣泛利用。

不同進位數转换[编辑]

十进數转成二进數[编辑]

整数部分,把十进制转成二进制一直分解至商數為0。讀餘數從下讀到上,即是二進位的整數部分數字。 小数部分,则用其乘2,取其整数部分的结果,再用计算后的小数部分依此重复计算,算到小数部分全为0为止,之后读所有计算后整数部分的数字,从上讀到下。
將59.25(10) 轉成二進制:

整数部分:
59 ÷ 2 = 29 ... 1
29 ÷ 2 = 14 ... 1
14 ÷ 2 =  7 ... 0
 7 ÷ 2 =  3 ... 1
 3 ÷ 2 =  1 ... 1
 1 ÷ 2 =  0 ... 1
小数部分:
0.25×2=0.5
0.50×2=1.0

也可以公式来计算

            59.2510= 101*10101+1001*10100+10*1010-1+101*1010-10
                   = 101*1010+1001+10/1010+101/1010/1010
                   = 110010+1001+(10+0.1)/1010
                   = 111011+0.01
                   = 111011.01

二进數转成十进數[编辑]

将1001012转换为十进制形式如下:

1001012 = [ ( 1 ) × 25 ] + [ ( 0 ) × 24 ] + [ ( 0 ) × 23 ] + [ ( 1 ) × 22 ] + [ ( 0 ) × 2 ] + [ ( 1 ) × 1 ]
1001012 = [ 1 × 32 ] + [ 0 × 16 ] + [ 0 × 8 ] + [ 1 × 4 ] + [ 0 × 2 ] + [ 1 × 1 ]
1001012 = 3710

數表[编辑]

十進制 0 1 2 3 4 5 6 7 8 9 10
二進制 0 1 10 11 100 101 110 111 1000 1001 1010
十進制 11 12 13 14 15 16 17 18 19 20 21
二進制 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100 10101
十進制 22 23 24 25 26 27 28 29 30 31 32
二進制 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 100000

二进制化为八进制[编辑]

把二进制化为八进制也很容易,因为八进制以8为基数,8是2的幂(8=23),因此八进制的一位恰好需要三个二进制位来表示)。八进制与二进制数之间的对应就是上面表格中十六进制的前八个数。二进制数000就是八进制数0,二进制数111就是八进制数7,以此类推。

八进制 二进制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111

八进制转为二进制:

658 = 110 1012
178 = 001 1112

二进制转八进制:

1011002 = 101 1002 (三位一组) = 548
100112 = 010 0112 (用零填充 (密码学),三位一组) = 238

八进制转十进制:

658 = (6 × 81) + (5 × 80) = (6 × 8) + (5 × 1) = 5310
1278 = (1 × 82) + (2 × 81) + (7 × 80) = (1 × 64) + (2 × 8) + (7 × 1) = 8710

表示实数[编辑]

非整数可以借负指数幂表示;只要用基数点(十进制中,就是小数点)把负指数幂表示的部分隔开即可。例如,二进制数11.012

1 × 21 (1 × 2 = 2)
1 × 20 (1 × 1 = 1)
0 × 2−1 (0 × 12 = 0)
1 × 2−2 (1 × 14 = 0.25)

就是十进制数字3.25。

所有二进分数都对应一个“有穷”二进制数字——这一二进制表示的小数部分位数有限。其他有理数也有二进制表示,但不是有穷的,而是出现循环,即某个有限序列出现无数次。例如

= = 0.01010101012
= = 0.10110100 10110100 10110100...2

在其他基数的计数系统中,有理数的表示也是有穷或循环的。另一相似之处在于,如果我们有一个有穷表示,那么它还会有其他的表示方式,例如几何级数2−1 + 2−2 + 2−3 + ...的和既是1,也是0.111111...。

无限不循环二进制小数表示的是无理数。例如,

  • 0.10100100010000100000100…有某种模式,但循环节长度不固定,所以是无理数
  • 1.0110101000001001111001100110011111110…是2的平方根的二进制表示,也是一个无理数。它没有可以看出的模式。参见无理数


  1. ^ 没有乘法口诀表将会怎样:古巴比伦乘法和古埃及乘法. Matrix67的博客
  2. ^ 柏应理(Philippe Couplet,1623-1693)比利时人,著名传教士。参见维基英文条目:Philippe CoupletPhilippe_Couplet
  3. ^ 参见:莱布尼茨二进制与伏羲八卦图考.胡阳,李长铎.上海:上海人民出版社.2006.google book
  4. ^ 4.0 4.1 J.E.H. Smith. Leibniz: What Kind of Rationalist?. Springer. 2008: 415. ISBN 978-1-4020-8668-7. 
  5. ^ Boole, George. An Investigation of the Laws of Thought on Which are Founded the Mathematical Theories of Logic and Probabilities Macmillan, Dover Publications, reprinted with corrections [1958]. New York: Cambridge University Press. 2009 [1854]. ISBN 978-1-108-00153-3. 
  6. ^ Shannon, Claude Elwood. A symbolic analysis of relay and switching circuits. Cambridge: Massachusetts Institute of Technology. 1940. 
  7. ^ 乔治·斯蒂比兹(George Stibitz ,1904-1995),美国,“数字计算机之父”。参见维基英文条目:George_Stibitz