查看“︁二进制”︁的源代码
←
二进制
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
{{Expand English}} {{Table Numeral Systems}} {{NoteTA |G1 = Electronics |G2 = IT |G3 = Communication |T=zh-cn:二进制;zh-tw:二進制; |1=zh-cn:进制;zh-tw:進制; }} '''二進制'''<ref>{{樂詞網|term =binary |urlid =79a86f13bf0d47aa1de46b168524d83d|access-date = }}</ref><ref>{{术语在线|term =binary |urlid =4fd1a1b626b111ee8685b068e6519520 |access-date = }}</ref>({{lang-en|binary}})在[[數學]]和[[數位電路]]中指以2為[[底数 (进制)|底数]]的記數系統,以2為基數代表系統是二進位制的。這一系統中,通常用兩個不同的數字0和1來表示。數字[[電子電路]]中,[[邏輯門]]直接採用了二進制,因此現代的計算機和依赖[[电子计算机|計算機]]的設備裡都用到二進制。每個數字稱為一個[[位元]](二進制位)或[[位元|比特]](Bit,Binary digit 的縮寫)。 == 历史 == 现代的二进制记数系统由[[戈特弗里德·莱布尼茨]]于1679年设计,在他1703年发表的文章《[[论只使用符号0和1的二进制算术]],兼论其用途及它赋予伏羲所使用的古老图形的意义》<ref>法语: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</ref>出现。与二进制数相关的系统在一些更早的文化中也有出现,包括古代的[[古埃及|埃及]]、[[中国歷史|中國]]、[[印度河流域文明|印度]]以及[[太平洋島原住民]]文明。其中,古代中国的《[[易经]]》尤其引起了莱布尼茨的联想。 [[File:Oudjat.SVG|thumb|240px|left|荷鲁斯之眼各部分所代表的算术值]] === 埃及 === [[古埃及]]的计数员使用两种不同的系统表示分数,一是埃及分数(与二进制记数系统无关),二是[[荷鲁斯之眼]]分数(叫这个名字是因为很多数学史家相信这个系统所采用的符号可以排列成荷鲁斯之眼,但这一点有争议)。荷鲁斯之眼分数是用来表示分数数量的谷物、液体等的二进制记数系统,在这一系统下,以赫卡特为单位的分数值表示成1/2、1/4、1/8、1/16、1/32和1/64等二进制分数的和。 这一系统的早期形式可以在埃及第五王朝(约公元前2400年)的档案中找到,而发展完备的象形文字形式可追溯到埃及第十九王朝(约公元前1200年)。 古埃及做乘法的方式也与二进制数密切相关,约公元前1650年的[[莱因德数学纸草书]]中就能看到。这一计算方法中,要把1和乘数不断翻倍,按被乘数的二进制表示从左列选出相应的2的幂次,并将右列的数相加。<ref>{{Cite web |url=http://www.matrix67.com/blog/archives/360 |title=没有乘法口诀表将会怎样:古巴比伦乘法和古埃及乘法. Matrix67的博客 |accessdate=2016-07-08 |archive-date=2020-08-15 |archive-url=https://web.archive.org/web/20200815080555/http://www.matrix67.com/blog/archives/360 |dead-url=no }}</ref> === 印度 === 印度学者平甲拉(公元前两世纪左右)通过二进制方法来研究韵律诗<ref>{{Cite book|last1=Sanchez|first1=Julio|last2=Canton|first2=Maria P.|title=Microcontroller programming: the microchip PIC|year=2007|publisher=CRC Press|location=Boca Raton, Florida|isbn=978-0-8493-7189-9|page=37}}</ref>。他的二进制中用到的是长短音节(一个长音节相当于两个短音节),有些像[[摩尔斯电码]]<ref>{{Cite book|title=The mathematics of harmony: from Euclid to contemporary mathematics and computer science|first1=Alexey|last1=Stakhov|author1-link=Alexey Stakhov|first2=Scott Anthony|last2=Olsen|isbn=978-981-277-582-5|year=2009|url=https://books.google.com/books?id=K6fac9RxXREC}}</ref>。与西方的位置表示法不同,平甲拉的系统中,二进制是从右往左书写的。 === 太平洋島原住民文明 === 在[[法屬玻里尼西亞]]的曼格雷哇島,挪威卑爾根大學的人類學家Andrea Bender和Sieghard Beller發現,在曼格雷哇人的語言上,存在著一個似乎混合了十進位和二進位的數學系統。它先於西方幾個世紀,為首個在歐亞大陸之外發展出的二進位算法<ref>{{Cite journal|last1=Bender|first1=Andrea|last2=Beller|first2=Sieghard|title=Mangarevan invention of binary steps for easier calculation|journal=Proceedings of the National Academy of Sciences|volume=111|issue=4|date=16 December 2013|doi=10.1073/pnas.1309160110|pages=1322–1327|pmid=24344278|pmc=3910603|doi-access=free}}</ref> 。 === 莱布尼茨前的西方先驱 === 1605年,[[弗朗西斯·培根]]提出了一套系统,可以把26个字母化为二进制数。此外他补充道,这个思路可以用于任何事物:“只要这些事物的差异是简单对立的,比如铃铛和喇叭,灯光和手电筒,以及火枪和类似武器的射击声”。这对二进制编码的一般理论有重要意义<ref>{{Cite web|last=Bacon|first=Francis|author-link=Francis Bacon|title=The Advancement of Learning|url=http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html|year=1605|location=London|pages=Chapter 1|access-date=2022-12-07|archive-date=2017-03-18|archive-url=https://web.archive.org/web/20170318232428/http://home.hiwaay.net/~paul/bacon/advancement/book6ch1.html|dead-url=no}}</ref>。(参见[[培根密码]]) === 莱布尼茨和中国的《易经》 === [[File:Gottfried Wilhelm von Leibniz.jpg|thumb|160px|戈特弗里德·莱布尼兹]] 莱布尼茨关于二进制的论文全名是《[[论只使用符号0和1的二进制算术]],兼论其用途及它赋予伏羲所使用的古老图形的意义》(1703年)。类似于现代二进制计数系统,莱布尼兹的系统使用0和1。下面是莱布尼兹的二进制记数系统的一个例子: * 0 0 0 1 数值为<math>2^0</math> * 0 0 1 0 数值为<math>2^1</math> * 0 1 0 0 数值为<math>2^2</math> * 1 0 0 0 数值为<math>2^3</math> [[File:Diagram of I Ching hexagrams owned by Gottfried Wilhelm Leibniz, 1701.jpg|缩略图|伏羲先天六十四卦〈方圓四分四層圖〉(1701年[[戈特弗里德·莱布尼茨|莱布尼茨]]得自[[白晋]]的圖文,時為清康熙四十年)]]莱布尼兹认为易经中的卦象与二进制算术密不可分。莱布尼兹解读了易经中的卦象,并认为这是其作为二进制算术的证据。作为[[亲华派]],莱布尼兹关注易经,并饶有兴致地注意到它的卦象与从0到111111的二进制数字有某种对应,并认为这种对应反映了中国的重大成就中展现的他所崇尚的数学哲学。莱布尼兹首次接触到易经是在与法国耶稣会传教士白晋的联系中。白晋1685年作为传教士前往中国。 长期以来,人们对莱布尼茨发明二进制是否受到了伏羲八卦的影响争议颇多。认为莱布尼茨未受伏羲八卦影响独立发明二进制的理由主要是莱布尼茨在1679年(与白晋首次通信的二十多年)就撰写了“二的级数”(De Progressione Dyadica)一文,郭书春在《古代世界数学泰斗刘徽》一书461页指出:“中国有所谓《周易》创造了二进制的说法,至于[[戈特弗里德·威廉·莱布尼茨|莱布尼茨]]受《周易》八卦的影响创造二进制并用于计算机的传说,更是广为流传。事实是,莱布尼兹先发明了二进制,后来才看到传教士带回的宋代学者重新编排的《周易》八卦,并发现八卦可以用他的二进制来解释。”因此,并不是[[莱布尼茨]]看到阴阳八卦才发明二进制。[[梁宗]]巨著《数学历史典故》一书14~18页对这一历史公案有更加详尽考察。<ref>{{Cite web |url=http://my.hoopchina.com/book/blog/2460513.html |title=数学科普:常识性谬误令人忧 |accessdate=2011-05-10 |archive-date=2011-12-19 |archive-url=https://web.archive.org/web/20111219141903/http://my.hoopchina.com/book/blog/2460513.html |dead-url=no }}</ref>;而目前有学者倾向于认为莱布尼茨二进制的体系确源于伏羲八卦图,莱布尼茨还阅读过1660年斯比赛尔出版的《中国文史评析》,其中亦有对《易经》和八卦的介绍。<ref>参见:莱布尼茨二进制与伏羲八卦图考.胡阳,李长铎.上海:上海人民出版社.2006.[https://books.google.com/books/about/%E8%8E%B1%E5%B8%83%E5%B0%BC%E8%8C%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%8E%E4%BC%8F%E7%BE%B2%E5%85%AB%E5%8D%A6%E5%9B%BE.html?id=Ae2AAAAAIAAJ google book] {{Wayback|url=https://books.google.com/books/about/%E8%8E%B1%E5%B8%83%E5%B0%BC%E8%8C%A8%E4%BA%8C%E8%BF%9B%E5%88%B6%E4%B8%8E%E4%BC%8F%E7%BE%B2%E5%85%AB%E5%8D%A6%E5%9B%BE.html?id=Ae2AAAAAIAAJ |date=20201116041043 }}</ref> 莱布尼兹认为易经的卦象肯定了他所信仰的基督教的[[共相]]。<ref name="smith">{{cite book|author1=J.E.H. Smith|title=Leibniz: What Kind of Rationalist?|url=https://books.google.com/books?id=Da_oP3sJs1oC&pg=PA4153|year=2008|publisher=Springer|isbn=978-1-4020-8668-7|page=415|access-date=2016-07-14|archive-date=2020-07-27|archive-url=https://web.archive.org/web/20200727112201/https://books.google.com/books?id=Da_oP3sJs1oC&pg=PA4153|dead-url=no}}</ref>一切数都可以用0和1创造出来,在莱布尼兹看来,这正象征了基督教《圣经》所说的上帝从“无”创造“有”(creatio ex nihilo)。 {{quote|(有一个概念)不容易传授给异教徒:全能的上帝从无创造有。现在我们可以说,数字的起源是世上能最好展示和说明这种力量的事物,它以“一”和“零”或者说“无”的形式呈现,既朴素又简练。|莱布尼茨写给鲁道夫·奥古斯都公爵的信<ref name="smith"/>}} ===后来的发展=== [[File:George Boole color.jpg|thumb|left|160px|乔治·布尔]] 1854年,英国数学家[[乔治·布尔]]发表了一篇里程碑式的论文,其中详细介绍了一种[[代数]]化的逻辑系统,后人称之为[[逻辑代数|布尔代数]]。他提出的逻辑演算在后来的电子电路设计中起基础性作用。<ref>{{cite book |last=Boole |first=George |origyear=1854 |url=http://www.gutenberg.org/etext/15114 |title=An Investigation of the Laws of Thought on Which are Founded the Mathematical Theories of Logic and Probabilities |publisher=Cambridge University Press |edition=Macmillan, Dover Publications, reprinted with corrections [1958] |location=New York |year=2009 |isbn=978-1-108-00153-3 |access-date=2016-07-14 |archive-date=2010-05-28 |archive-url=https://web.archive.org/web/20100528151044/http://www.gutenberg.org/etext/15114 |dead-url=no }}</ref> 1937年,[[克劳德·香农]]在[[麻省理工大学]]完成了其电气工程硕士学位论文,用继电器和开关实现了布尔代数和二进制算术运算。论文题为《继电器与开关电路的符号分析》(A Symbolic Analysis of Relay and Switching Circuits)<ref>{{cite book |title=A symbolic analysis of relay and switching circuits |last=Shannon |first=Claude Elwood |publisher=Massachusetts Institute of Technology |location=Cambridge |year=1940 |url=http://hdl.handle.net/1721.1/11173 |access-date=2016-07-14 |archive-date=2008-07-04 |archive-url=https://web.archive.org/web/20080704154717/http://hdl.handle.net/1721.1/11173 |dead-url=no }}</ref>,其中香农的理论奠定了数字电路的理论基础。香农凭这篇论文于1940年被授予美国阿尔弗雷德·诺贝尔协会美国工程师奖。哈佛大学的哈沃德·加德纳称,香农的硕士论文“可能是本世纪最重要、最著名的硕士学位论文”。 1937年11月,任职于[[贝尔实验室]]的乔治·斯蒂比兹<ref>乔治·斯蒂比兹(George Stibitz ,1904-1995),美国,“数字计算机之父”。参见维基英文条目:[https://en.wikipedia.org/wiki/George_Stibitz George_Stibitz] {{Wayback|url=https://en.wikipedia.org/wiki/George_Stibitz |date=20201204065529 }}</ref>发明了用继电器表示二进制的装置。它是第一台二进制电子计算机。 {{Clear}} ==运算规则== ===四则运算=== *[[加法]]:0+0=0,0+1=1,1+0=1,1+1=10 *[[减法]]:0-0=0,1-0=1,1-1=0,10-1=1 *[[乘法]]:0×0=0,0×1=0,1×0=0,1×1=1 *[[除法]]:0÷1=0,1÷1=1 ===拈加法=== {{main|逻辑异或|拈}} 二進制的一種特殊的算法,稱為拈加法。進行拈加法時,與進行加法無異,只是不需進行進位,即是逐位[[XOR]]。與博弈论的關係,見{{section link|尼姆游戏#數學理論}}。 ==不同進位數转换== ===十进制化为二进制=== 整数部分,把十进制转成二进制一直分解至[[商數]]為0。讀餘數從下讀到上,即是二進位的整數部分數字。<ref>{{cite book|author=M Morris Mano; Michael D Ciletti|title=''Digital design : with an introduction to the verilog hdl''|year=2013|publisher=[[培生教育]]|isbn=9780273764526|pages=第22頁}}</ref> 小数部分,则用其乘2,取其整数部分的结果,再用计算后的小数部分依此重复计算,算到小数部分全为0为止,之后读所有计算后整数部分的数字,从上讀到下。 將59.25<sub>(10)</sub> 轉成二進制: # 整数部分:{{#tag:pre|<nowiki> 59 ÷ 2 = 29 ... 1 29 ÷ 2 = 14 ... 1 14 ÷ 2 = 7 ... 0 7 ÷ 2 = 3 ... 1 3 ÷ 2 = 1 ... 1 1 ÷ 2 = 0 ... 1 </nowiki>}} # 小数部分:{{#tag:pre|<nowiki> 0.25 × 2 = 0.5 ... 0 0.50 × 2 = 1.0 ... 1 </nowiki>}} 所以:<math>59.25_{(10)}=111011.01_{(2)}</math> 也可以公式来计算: 59.25<sub>10</sub> = 101*1010<sup>1</sup>+1001*1010<sup>0</sup>+10*1010<sup>-1</sup>+101*1010<sup>-2</sup> = 101*1010+1001+10/1010+101/1010/1010 = 110010+1001+(10+0.1)/1010 = 111011+0.01 = 111011.01 ===二进制化为十进制=== 将100101<sub>2</sub>转换为十进制形式如下: :100101<sub>2</sub> = [ ( '''1''' ) × 2<sup>5</sup> ] + [ ( '''0''' ) × 2<sup>4</sup> ] + [ ( '''0''' ) × 2<sup>3</sup> ] + [ ( '''1''' ) × 2<sup>2</sup> ] + [ ( '''0''' ) × 2 ] + [ ( '''1''' ) × 1 ] :100101<sub>2</sub> = [ '''1''' × 32 ] + [ '''0''' × 16 ] + [ '''0''' × 8 ] + [ '''1''' × 4 ] + [ '''0''' × 2 ] + [ '''1''' × 1 ] :'''100101<sub>2</sub> = 37<sub>10</sub>''' {| class="wikitable" style="text-align:center;" |- !十進制||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 |- !十進制||33||34||35||36||37||38||39||40||41||42||43 |- !二進制 |100001||100010||100011||100100||100101||100110||100111||101000||101001||101010||101011 |} ===二进制化为八进制=== 把二进制化为八进制也不是很难,因为八进制以8为基数,8是2的幂(8=2<sup>3</sup>),因此八进制的一位恰好需要三个二进制位来表示。八进制与二进制数之间的对应就是上面表格中十六进制的前八个数。二进制数000就是八进制数0,二进制数111就是八进制数7,以此类推。 {| class="wikitable" style="text-align:center" !八进制!!二进制 |- | 0 || 000 |- | 1 || 001 |- | 2 || 010 |- | 3 || 011 |- | 4 || 100 |- | 5 || 101 |- | 6 || 110 |- | 7 || 111 |} 八进制转为二进制: * 65<sub>8</sub> = 110 101<sub>2</sub> * 17<sub>8</sub> = 001 111<sub>2</sub> 二进制转八进制: * 101100<sub>2</sub> = 101 100<sub>2</sub> (三位一组) = 54<sub>8</sub> * 10011<sub>2</sub> = 010 011<sub>2</sub> (用零[[填充 (密码学)]],三位一组) = 23<sub>8</sub> ===八进制化为十进制=== 遵循二进制化为十进制的方法即可。所不同的是每一位乘上一个底数为8的[[幂]]。 * 65<sub>8</sub> = (6 × 8<sup>1</sup>) + (5 × 8<sup>0</sup>) = (6 × 8) + (5 × 1) = 53<sub>10</sub> * 127<sub>8</sub> = (1 × 8<sup>2</sup>) + (2 × 8<sup>1</sup>) + (7 × 8<sup>0</sup>) = (1 × 64) + (2 × 8) + (7 × 1) = 87<sub>10</sub> == 表示实数 == 非整数可以借负指数幂表示;只要用基数点(十进制中,就是小数点)把负指数幂表示的部分隔开即可。例如,二进制数11.01<sub>2</sub>: :{| |'''1''' × 2<sup>1</sup> || (1 × 2 = '''2''') || 加 |- |'''1''' × 2<sup>0</sup> || (1 × 1 = '''1''') || 加 |- |'''0''' × 2<sup>−1</sup> || (0 × {{frac|2}} = '''0''') || 加 |- |'''1''' × 2<sup>−2</sup> || (1 × {{frac|4}} = '''0.25''') |} 就是十进制数字3.25。 所有[[二进分数]]<math>\frac{p}{2^a}</math>都对应一个“有穷”二进制数字——这一二进制表示的小数部分位数有限。其他有理数也有二进制表示,但不是有穷的,而是出现循环,即某个有限序列出现无数次。例如 :<math>\frac{1_{10}}{3_{10}}</math> = <math>\frac{1_2}{11_2}</math> = 0.01010101{{overline|01}}…<sub>2</sub> :<math>\frac{12_{10}}{17_{10}}</math> = <math>\frac{1100_2}{10001_2}</math> = 0.10110100 10110100 {{overline|10110100}}...<sub>2</sub> 在其他基数的计数系统中,有理数的表示也是有穷或循环的。另一相似之处在于,如果我们有一个有穷表示,那么它还会有其他的表示方式,例如几何级数2<sup>−1</sup> + 2<sup>−2</sup> + 2<sup>−3</sup> + ...的和既是1,也是0.111111...。 无限不循环二进制小数表示的是[[无理数]]。例如, * 0.101001000100001000001000000…有某种模式,但循环节长度不固定,所以是无理数。這個數的數值為<math>2^{-\tfrac{7}{8}}\theta_2\left(0;\tfrac{\sqrt 2}{2}\right)-1\approx 0.64163256...</math><ref>{{Cite OEIS|sequencenumber=A190404|name=Decimal expansion of <math display="inline">\sum_{k>=1} (1/2)^{T(k)},\,</math> where T=A000217 (triangular numbers)}}</ref>,其中<math>\theta_2</math>為[[Θ函數]]。 * 1.0110101000001001111001100110011111110…是2的平方根<math>\sqrt{2}</math>的二进制表示,也是一个无理数。它没有可以看出的模式。参见[[无理数]]。 ==参考资料== {{reflist}} {{pns}} {{Authority control}} [[Category:进位制| ]] [[Category:計算機算術]] [[Category:算术]] [[Category:戈特弗里德·萊布尼茨]] [[Category:二进制算术]] [[Category:二分法]]
返回
二进制
。
导航菜单
个人工具
登录
命名空间
页面
讨论
不转换
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
特殊页面
工具
链入页面
相关更改
页面信息