二進(jìn)制(英文名:Binary),是德國(guó)數(shù)學(xué)家戈特弗里德·威廉·萊布尼茨(Gottfried Wilhelm Leibniz)于1679年3月15日發(fā)明的一種計(jì)數(shù)系統(tǒng)。
二進(jìn)制在公元前4世紀(jì)的古代印度詩(shī)歌韻律、17世紀(jì)初的英國(guó)培根密碼中已有關(guān)于“二進(jìn)制系統(tǒng)”的使用。萊布尼茨于1705年正式發(fā)表《論單純使用0與1的二進(jìn)制算術(shù)—兼論二進(jìn)制用途及伏羲所使用的古代中國(guó)符號(hào)的意義》的二進(jìn)制論文。
二進(jìn)制定義為:按“逢二進(jìn)一”的原則進(jìn)行計(jì)數(shù),稱為二進(jìn)制數(shù),即每位上計(jì)滿2時(shí)向高位進(jìn)1。特點(diǎn)是:每個(gè)數(shù)的數(shù)位上只能是0,1兩個(gè)數(shù)字;二進(jìn)制數(shù)中最大數(shù)字是1,最小數(shù)字是0;基數(shù)為2。二進(jìn)制可與八進(jìn)制、十進(jìn)制、十六進(jìn)制轉(zhuǎn)換,也可以進(jìn)行加、減、乘、除四則運(yùn)算,二進(jìn)制數(shù)也可以通過(guò)邏輯代數(shù)進(jìn)行與、或、非等運(yùn)算。二進(jìn)制可以應(yīng)用在多個(gè)領(lǐng)域,包括文字、聲音、圖形等,通過(guò)編碼、解碼可以把現(xiàn)實(shí)世界的不同情形表達(dá)為“0”“1”,進(jìn)而利用計(jì)算機(jī)解決現(xiàn)實(shí)問(wèn)題,在計(jì)算機(jī)領(lǐng)域中,數(shù)制轉(zhuǎn)換通常涉及到二進(jìn)制到十進(jìn)制、十進(jìn)制到二進(jìn)制、二進(jìn)制到十六進(jìn)制、十六進(jìn)制到二進(jìn)制的轉(zhuǎn)換以及BCD碼、ASCII碼的生成等。
定義
二進(jìn)制定義為:數(shù)碼0和1,只使用0和1兩種數(shù)字的計(jì)數(shù)法,叫做二進(jìn)制計(jì)數(shù)法,按“逢二進(jìn)一”的原則進(jìn)行計(jì)數(shù),即每位上計(jì)滿2時(shí)向高位進(jìn)1,基數(shù)為2,權(quán)為2。二進(jìn)制的特點(diǎn)是:每個(gè)數(shù)的數(shù)位上只能是0,1兩個(gè)數(shù)字;二進(jìn)制數(shù)中最大數(shù)字是1,最小數(shù)字是0;基數(shù)為2。
簡(jiǎn)史
早期的二進(jìn)制
現(xiàn)代意義上的二進(jìn)制是以0和1作為表達(dá)的基數(shù)的,原始的二進(jìn)制形式早在古埃及就曾經(jīng)出現(xiàn),巴什瑪柯娃在《算術(shù)》中就表明曾經(jīng)就以1與2作為基數(shù),數(shù)字3則是作為代表一個(gè)對(duì)象的復(fù)數(shù)符號(hào)。“當(dāng)埃及人對(duì)數(shù)字做乘法時(shí)也是會(huì)使用這個(gè)二進(jìn)制,他們則是將乘數(shù)先表示為二進(jìn)制方式,然后再將各個(gè)二進(jìn)制數(shù)與另一乘數(shù)進(jìn)行相乘。”例如X*15=X(1+2+22+23)=X*1+X*2+X*22+X*23。除了古埃及,還有其他很多部族也在使用類似于二進(jìn)制的數(shù)字或者計(jì)算。在托列斯峽群島的一個(gè)部族里,數(shù)字只有兩個(gè)—1和2,1叫做烏拉勃,2叫做阿柯扎,數(shù)字3、4、5、6分別表示為(“-”不等于現(xiàn)代的減號(hào)意義):3=2-1、4=2-2、5=2-2-1、6=2-2-2,這樣的古老的原始的計(jì)數(shù)方式,一定程度上具有二進(jìn)制的特征,卻沒(méi)有規(guī)定其位置進(jìn)位制。在公元前4世紀(jì)前后,印度有一位學(xué)者叫平格拉(Pingala)在列舉詩(shī)歌的種種韻律時(shí),發(fā)展出一套描述詩(shī)歌韻律的“先進(jìn)的符號(hào)系統(tǒng)”,這套符號(hào)系統(tǒng)被美國(guó)學(xué)者舍利視為最早的二進(jìn)制體系。平格拉使用兩種符號(hào),一個(gè)“L”代表長(zhǎng)音節(jié),一個(gè)“S”代表短音節(jié),一個(gè)長(zhǎng)音節(jié)是一個(gè)短音節(jié)的二倍。他列舉出了十六種組合模式。如果把韻律的短音節(jié)“S”用“0”代替,長(zhǎng)音節(jié)“L”用“1”代替,十六個(gè)韻律就是從0到15的二進(jìn)制數(shù)字。
研究發(fā)展階段
大約在戈特弗里德·萊布尼茨發(fā)明二進(jìn)制百年之前,托馬斯·哈里奧特(Thomas Harriot)就對(duì)二進(jìn)制進(jìn)行了一些數(shù)學(xué)方面的研究,他“使用0和1作為符號(hào)計(jì)數(shù),并且列舉了一些用二進(jìn)制表達(dá)的數(shù)字,還研究了二進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換方法。”弗朗西斯·培根是英國(guó)著名哲學(xué)家,在1605年寫的《學(xué)術(shù)的進(jìn)步》一書(shū)中,就記載著他自己設(shè)計(jì)的一套密碼系統(tǒng),被稱為培根密碼。該系統(tǒng)首先把英語(yǔ)字母表中的字母全部用兩個(gè)字母a和b來(lái)表示,編成密碼字母表。如A=aaaaa、B=aaaab、C=aaaba等,如果把字母a和b換成數(shù)字0和1,就是二進(jìn)制數(shù)字。
與戈特弗里德·萊布尼茨幾乎處于同時(shí)代的一位西班牙學(xué)者J.C.Y.羅布科維茨(J.C.Y.Lobkowitz)也發(fā)表了相關(guān)二進(jìn)制的文章,并且要先于萊布尼茨33年,是最先公布的二進(jìn)制相關(guān)研究的學(xué)者。他與萊布尼茨的二進(jìn)制不同的是:首先,萊布尼茨使用1與0作為二進(jìn)制的符號(hào),他則是使用字母a和0。另一方面,羅布科維茨僅僅只研究了二進(jìn)制數(shù)字符號(hào)的表達(dá)以及與十進(jìn)制之間的規(guī)律,但是對(duì)于二進(jìn)制的運(yùn)算卻未能進(jìn)行研究。
1679年3月15日德國(guó)數(shù)學(xué)家戈特弗里德·萊布尼茨用拉丁文寫出了創(chuàng)建二進(jìn)制算術(shù)的論文手稿,直到1701年,他把關(guān)于二進(jìn)制的論文《數(shù)字新科學(xué)論》提交給法國(guó)科學(xué)院,但被時(shí)任巴黎科學(xué)院秘書(shū)長(zhǎng)的豐特內(nèi)爾婉言拒絕。1703年,萊布尼茨在《數(shù)字新科學(xué)論》基礎(chǔ)上增補(bǔ)了“伏羲八卦”三段內(nèi)容,以《論單純使用0與1的二進(jìn)制算術(shù)—兼論二進(jìn)制用途及伏羲所使用的古代中國(guó)符號(hào)的意義》于1705年在巴黎出版的《1703年皇家科學(xué)院年鑒》上發(fā)表。
廣泛應(yīng)用階段
在19世紀(jì)時(shí),由于布爾代數(shù)的出現(xiàn),讓戈特弗里德·萊布尼茨的二進(jìn)制得到應(yīng)用。二進(jìn)制代數(shù)的建立,給現(xiàn)代二進(jìn)制計(jì)算機(jī)的誕生提供了保障,二進(jìn)制是計(jì)算機(jī)唯一能夠識(shí)別的機(jī)器語(yǔ)言,它僅僅由"0"和"1"數(shù)字符號(hào)組成,并被頻繁使用。“0”與“1”的恰到好處的能夠代表邏輯命題里類似“真”與“假“的表達(dá),這樣的適配給予了計(jì)算機(jī)進(jìn)行邏輯的計(jì)算和判斷創(chuàng)造了合適的條件。到了20世紀(jì),人類發(fā)明了計(jì)算機(jī),二進(jìn)制才開(kāi)始得到快速發(fā)展。計(jì)算機(jī)都是基于一種開(kāi)關(guān)式的電路,也就是說(shuō)這段電路上要么沒(méi)電、要么有電,就可以表示0或1。大規(guī)模的集成電路很容易表示為二進(jìn)制數(shù),二進(jìn)制就成了計(jì)算機(jī)技術(shù)中廣泛采用的一種進(jìn)位制。電子計(jì)算機(jī)的通用語(yǔ)言都是二進(jìn)制,隨著ASCII、Unicode等編碼技術(shù)逐漸出現(xiàn),為現(xiàn)代計(jì)算機(jī)和人工智慧打下了基礎(chǔ)。
二進(jìn)制的表示
對(duì)于二進(jìn)制數(shù)的表示,可以在數(shù)字的右下角標(biāo)注2或B。例如,(10010)B就是一個(gè)二進(jìn)制數(shù)。不同數(shù)位表示的值不同,各位的權(quán)是以2為底的連續(xù)整數(shù)冪,從右向左遞增。對(duì)于任意一個(gè)二進(jìn)制數(shù)N,其按權(quán)展開(kāi)式如下:
(N)B=an-1 X 2n-1十a(chǎn)n-2 X 2n-2+...+a1 X 21+a0 X 20+a-1 X 2-1+a-2 X 2-2+...十a(chǎn)-m X 2-m
=ai X 2i
其中,ai表示各個(gè)數(shù)字符號(hào),為0或者1;n為整部數(shù)分的位數(shù);m為小數(shù)部分的位數(shù)。
二進(jìn)制的運(yùn)算
二進(jìn)制中有兩個(gè)數(shù)字符號(hào)“0”和“1”,一個(gè)具有兩種穩(wěn)定狀態(tài)且能相互轉(zhuǎn)換的物理器件便可表示一個(gè)二進(jìn)制數(shù)、物理實(shí)現(xiàn)簡(jiǎn)單方便,而且其運(yùn)算規(guī)則也比十進(jìn)制數(shù)的運(yùn)算規(guī)則簡(jiǎn)單。
加法運(yùn)算
二進(jìn)制加法規(guī)則為:
0+0=0
0+1=1+0=1
1+1=0進(jìn)位為1(即結(jié)果為10)
1+1+1=1(結(jié)果為11),所以兩個(gè)二進(jìn)制相加,其加法過(guò)程如下:
由此可知,兩個(gè)二進(jìn)制數(shù)相加,每一位有三個(gè)數(shù)參加運(yùn)算(相加的兩個(gè)數(shù)及低位來(lái)的進(jìn)位),按二進(jìn)制數(shù)的加法運(yùn)算規(guī)則必得到本位的和及向高位的進(jìn)位。
減法運(yùn)算
二進(jìn)制減法運(yùn)算規(guī)則為:
0-0=0
1-1=0
1-0=1
0-1=1有借位
0-1-1=0有借位
所以,兩個(gè)二進(jìn)制數(shù)相減,如11000001-10101010,其減法過(guò)程如下:
減法運(yùn)算與加法類似,每一位有三個(gè)數(shù)參加運(yùn)算(本位的被減數(shù)和減數(shù)以及低位來(lái)的借位),按二進(jìn)制的減法運(yùn)算規(guī)則得到本位的差及向高位的借位。
乘法運(yùn)算
二進(jìn)制的乘法運(yùn)算規(guī)則為:
0X0=0
0X1=0
1X0=0
1X1=1
只有當(dāng)兩個(gè)1相乘時(shí),積才為1,否則為0。兩個(gè)二進(jìn)制數(shù)相乘與兩個(gè)十進(jìn)制數(shù)相乘類似,而且更為簡(jiǎn)便:兩個(gè)二進(jìn)制數(shù)1101X1011其具體過(guò)程如下:
用乘數(shù)的每一位去乘被乘數(shù),乘得中間結(jié)果的最低有效位與乘數(shù)相應(yīng)位對(duì)齊,中間結(jié)果取決于乘數(shù)。若乘數(shù)位為0,則中間結(jié)果為0;若乘數(shù)位為1,則中間結(jié)果為被乘數(shù),然后把這些中間結(jié)果全部加起來(lái),即得乘積。
兩個(gè)二進(jìn)制數(shù)相乘時(shí),乘數(shù)有幾位,就有幾個(gè)中間結(jié)果需同時(shí)進(jìn)行相加,機(jī)器實(shí)現(xiàn)有困難為便于計(jì)算機(jī)中實(shí)現(xiàn),常用邊乘邊移位相加的辦法,即被乘數(shù)左移法或部分積右移法。
例如:乘數(shù)為1001,被乘數(shù)為1101,開(kāi)始時(shí)部分積為0000,則運(yùn)算步驟是
第一步,乘數(shù)最低位為1,部分積加被乘數(shù),然后被乘數(shù)左移一位為11010
第二步,乘數(shù)位為0,不加被乘數(shù),被乘數(shù)左移一位,即110100
第三步,數(shù)位為0,不加被乘數(shù),被乘數(shù)左移一位,即1101000
第四步,乘數(shù)位為1,部分積加被乘數(shù),得乘積1110101
由此可看出:兩個(gè)n位數(shù)相乘,乘積為2n位。在計(jì)算過(guò)中,這2n位可能都要參加相加操作,所以需要2n個(gè)加法器。
例如:乘數(shù)為1001,被乘數(shù)為1101,開(kāi)始時(shí)部分積為0000,則運(yùn)算步驟是
第一步,乘數(shù)最低位為1,部分積加被乘數(shù),然后右移一位
第二步,乘數(shù)位為0,不加被乘數(shù),部分積右移一位
第三步,乘數(shù)位為0,不加被乘數(shù),部分積右移一位
第四步,乘數(shù)位為1,部分積加被乘數(shù),部分積右移一位將得乘積
所以:1101 X 1001=01110101
所得結(jié)果相同。但只有n位有相加操作,只需n個(gè)加法器。所以,計(jì)算機(jī)中兩個(gè)二進(jìn)制數(shù)相乘時(shí),普遍采用部分積右移法。
除法運(yùn)算
因0不能作除數(shù),所以二進(jìn)制數(shù)的除法運(yùn)算規(guī)則如下:
0÷1=0
1÷1=1
二進(jìn)制的除法與十進(jìn)制除法十分類似。從被除數(shù)的最高位開(kāi)始檢查,找出不少于除數(shù)的位數(shù)時(shí),此位商1,然后選定的被除數(shù)減去除數(shù),并把被除數(shù)的下一位移到余數(shù)上。若余數(shù)小于除數(shù)(不夠減)商0,再把被除數(shù)的下一位移到余數(shù)上,若余數(shù)大于等于除數(shù)(夠減)商1,余數(shù)減去除數(shù)再把被除數(shù)的下一位移到余數(shù)上,如此繼續(xù)下去,直到全部被除數(shù)位移完為止。
即110110B÷110B=1001B。
拈加法
拈加法是二進(jìn)制加、減、乘、除外的一種特殊算法。拈加法運(yùn)算與加法類似但不需要做進(jìn)位。此算法在博弈論(Game Theory)中被廣泛利用。
計(jì)數(shù)系統(tǒng)
數(shù)制
數(shù)制即進(jìn)位計(jì)數(shù)制,是基于統(tǒng)一規(guī)則用一組固定的數(shù)字符號(hào)表示數(shù)值的方法,數(shù)制包括兩個(gè)重要概念—基數(shù)和位權(quán)。在計(jì)算機(jī)科學(xué)中,常見(jiàn)的數(shù)制有二進(jìn)制(Binary)、八進(jìn)制(Octal)、十進(jìn)制(Decimal)和十六進(jìn)制(十六進(jìn)制數(shù))。
數(shù)據(jù)來(lái)源:
常見(jiàn)的進(jìn)制
計(jì)數(shù)系統(tǒng)是一種表示數(shù)量的信息方法,常見(jiàn)的計(jì)算系統(tǒng)除二進(jìn)制外,有八進(jìn)制、十進(jìn)制、十六進(jìn)制等。
八進(jìn)制
八進(jìn)制數(shù)的組成,八進(jìn)制數(shù)由0,1,2……7八個(gè)數(shù)組成。八進(jìn)制數(shù)的進(jìn)借位規(guī)則,逢八進(jìn)一、借一當(dāng)八。定義為:按“逢八進(jìn)一”的原則進(jìn)行計(jì)數(shù),稱為八進(jìn)制數(shù),即每位上計(jì)滿8時(shí)向高位進(jìn)1。特點(diǎn)是:每個(gè)數(shù)的數(shù)位上只能是0、1、2、3、4、5、6、7八個(gè)數(shù)字;八進(jìn)制數(shù)中最大數(shù)字是7,最小數(shù)字是0;基數(shù)為8。
十進(jìn)制
十進(jìn)制數(shù)的組成,由0,1,2……9共10個(gè)數(shù)組成。十進(jìn)制數(shù)的進(jìn)借位規(guī)則,逢十進(jìn)一、借一當(dāng)十。例如十進(jìn)制數(shù)1280可以寫為:1X103+2X102+8X101+0X100其中1、2、8、0均為權(quán)系數(shù),103、102、101、100稱為位權(quán),而式子當(dāng)中的10稱為基數(shù)(因?yàn)槭M(jìn)制數(shù)),指數(shù)則指的是該位后十進(jìn)制的位數(shù)。在實(shí)際應(yīng)用的過(guò)程中,任何數(shù)制都可以按照加權(quán)系數(shù)展開(kāi)。這里要特別注意的是基數(shù)是會(huì)跟隨數(shù)制的變化而發(fā)生變化的,比如二進(jìn)制數(shù)按加權(quán)系數(shù)展開(kāi)時(shí),基數(shù)應(yīng)變?yōu)?,而不再是10。同時(shí)任何數(shù)制按權(quán)展開(kāi)后將轉(zhuǎn)換為十進(jìn)制數(shù)。常見(jiàn)的數(shù)制有二、八、十、十六進(jìn)制,因此各進(jìn)制基數(shù)值分別是2、8、10和16。
十六進(jìn)制
十六進(jìn)制數(shù)的組成,十六進(jìn)制數(shù)由0,1……9,A(10),B(11),C(12),D(13),E(14),F(xiàn)(15)十六個(gè)數(shù)組成。十六進(jìn)制數(shù)的進(jìn)借位規(guī)則,逢十六進(jìn)一、借一當(dāng)十六。定義為:按“逢十六進(jìn)一”的原則進(jìn)行計(jì)數(shù),稱為十六進(jìn)制數(shù),即每位上計(jì)滿16時(shí)向高位進(jìn)一。特點(diǎn)是:每個(gè)數(shù)的數(shù)位上只能是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六個(gè)數(shù)碼:十六進(jìn)制數(shù)中最大數(shù)字是F即15,最小數(shù)字是0;基數(shù)為16。實(shí)際上計(jì)算機(jī)科學(xué)中常用十六進(jìn)制來(lái)表示二進(jìn)制數(shù)串,因?yàn)橛?jì)算機(jī)處理的二進(jìn)制數(shù)比較長(zhǎng),如果用十六進(jìn)制數(shù)來(lái)表示則縮短了數(shù)據(jù)位數(shù),比較直觀。
二進(jìn)制與其他進(jìn)制的轉(zhuǎn)換
二進(jìn)制與八進(jìn)制的轉(zhuǎn)換
23等于8,二進(jìn)制數(shù)與八進(jìn)制數(shù)有倍數(shù)關(guān)系,在將二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)時(shí),采用3位二進(jìn)制數(shù)換1位八進(jìn)制數(shù)(簡(jiǎn)稱:3位換1位)的方法。反之即采用1位換3位的方法。轉(zhuǎn)換規(guī)則:從小數(shù)點(diǎn)開(kāi)始向左右兩邊分組,三位一組,不足三位,以0補(bǔ)齊,每一組(三位二進(jìn)制數(shù))對(duì)應(yīng)一位八進(jìn)制基數(shù)。
如:(1101011)B=()O。
計(jì)算過(guò)程為:
解:(1101011)B=(153)O。
對(duì)于非整數(shù)的二進(jìn)制數(shù),應(yīng)分成整數(shù)部分與純小數(shù)部分分別加以轉(zhuǎn)換。例如,八進(jìn)制的基數(shù)R=8=23必須用三位二進(jìn)制數(shù)來(lái)構(gòu)成一位八進(jìn)制數(shù)碼,因此采用分組對(duì)應(yīng)轉(zhuǎn)換法。轉(zhuǎn)換方法為:將二進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制數(shù)時(shí),首先從小數(shù)點(diǎn)位置開(kāi)始,向左或向右將二進(jìn)制數(shù)的整數(shù)和小數(shù)部分每三位分為一組,不足三位的分別在整數(shù)的最高位前和小數(shù)的最低位后加“0”補(bǔ)足,然后寫出每一組進(jìn)制數(shù)所對(duì)應(yīng)的八進(jìn)制數(shù)碼即可。
如:將二進(jìn)制數(shù)(10110001.111)2轉(zhuǎn)換成八進(jìn)制數(shù)。
計(jì)算過(guò)程為: 補(bǔ)0
即二進(jìn)制數(shù)(10110001.111)2轉(zhuǎn)換成八進(jìn)制數(shù)是(261.7)8。反過(guò)來(lái),將每位八進(jìn)制數(shù)分別用三位二進(jìn)制數(shù)表示,就可完成八進(jìn)制數(shù)到二進(jìn)制數(shù)的轉(zhuǎn)換。
八進(jìn)制轉(zhuǎn)換為二進(jìn)制
八進(jìn)制轉(zhuǎn)換為二進(jìn)制的方法與二進(jìn)制與八進(jìn)制的轉(zhuǎn)換相反,二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)時(shí),采用3位二進(jìn)制數(shù)換1位八進(jìn)制數(shù)(簡(jiǎn)稱:3位換1位)的方法,八進(jìn)制轉(zhuǎn)換為二進(jìn)制時(shí)則采用1位換3位的方法。
如:(153)O=()B。
計(jì)算過(guò)程為:
解:(153)O=(1101011)B。
數(shù)據(jù)來(lái)源:
二進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換
二進(jìn)制轉(zhuǎn)換為十進(jìn)制
對(duì)于N進(jìn)制數(shù),每個(gè)位置上數(shù)據(jù)所代表的大小等于數(shù)據(jù)本身乘以位權(quán),二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)即按照位權(quán)展開(kāi)多項(xiàng)式求和的方法。如:將二進(jìn)制數(shù)1010轉(zhuǎn)換為十進(jìn)制數(shù)。
如:(1010)B=()D。
解:(1010)B=1X23+0X22+1X21+0X20=8+0+2+0=(10)D。
十進(jìn)制轉(zhuǎn)換為二進(jìn)制
對(duì)于十進(jìn)制數(shù)轉(zhuǎn)換為非十進(jìn)制數(shù),采用“除基取余法”,即十進(jìn)制數(shù)不斷除以基數(shù),取每一次余數(shù),直至商為0,然后將余數(shù)“自下而上”排列即可。
如:(25)D=()B。
計(jì)算過(guò)程為:
解:(25)D=(11001)B。
數(shù)據(jù)來(lái)源:
二進(jìn)制與十六進(jìn)制之間的轉(zhuǎn)換
二進(jìn)制轉(zhuǎn)換成十六進(jìn)制
由24=16可以分析得出這樣的關(guān)系,四個(gè)二進(jìn)制數(shù)相當(dāng)于十六進(jìn)制數(shù)的一位,即十六進(jìn)制數(shù)的一位相當(dāng)于二進(jìn)制數(shù)的四位,這個(gè)關(guān)系就成為二、十六進(jìn)制數(shù)相互轉(zhuǎn)換的規(guī)則。轉(zhuǎn)換規(guī)則:從小數(shù)點(diǎn)開(kāi)始向左右兩邊分組,四位一組,不足三四位,以0補(bǔ)齊,每一組(四位二進(jìn)制數(shù))對(duì)應(yīng)一位十六進(jìn)制基數(shù)。
如:(1101011)B=()H。
計(jì)算過(guò)程為:
解:(1101011)B=(6B)H。
二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù)時(shí),只要從小數(shù)點(diǎn)位置開(kāi)始,向左或向右每四位二進(jìn)制劃分為一組(不足四位時(shí)可補(bǔ)0),然后寫出每一組二進(jìn)制數(shù)所對(duì)應(yīng)的十六進(jìn)制數(shù)碼即可。
如:將二進(jìn)制數(shù)(11011100110.1101)2轉(zhuǎn)換成十六進(jìn)制數(shù)。
計(jì)算過(guò)程為: 補(bǔ)0
即二進(jìn)制數(shù)(11011100110.1101)2轉(zhuǎn)換成十六進(jìn)制數(shù)是(6E6.D)16,反過(guò)來(lái),將每位十六進(jìn)制數(shù)分別用四位二進(jìn)制數(shù)表示,就可完成十六進(jìn)制數(shù)到二進(jìn)制數(shù)的轉(zhuǎn)換。
十六進(jìn)制轉(zhuǎn)換成二進(jìn)制
同理,十六進(jìn)制轉(zhuǎn)換成二進(jìn)制與二進(jìn)制轉(zhuǎn)換成十六進(jìn)制相反,即采用1位換4位的方法。
?如:(E06D)H=()B。
計(jì)算過(guò)程為:
解:(E06D)H=(1110000001101101)B。
數(shù)據(jù)來(lái)源:
二進(jìn)制與邏輯代數(shù)
二進(jìn)制數(shù)碼不僅可以表示數(shù)量的大小,像十進(jìn)制數(shù)那樣進(jìn)行算術(shù)運(yùn)算,還可以表示兩種不同的邏輯狀態(tài),如開(kāi)關(guān)的接通和斷開(kāi)、電平的高和低、真和假、命題的正確與否等,進(jìn)行邏輯運(yùn)算。當(dāng)二進(jìn)制數(shù)用于表示邏輯狀態(tài)時(shí),二進(jìn)制數(shù)不再表示數(shù)值上的大小,數(shù)與數(shù)間的運(yùn)算也不再是普通代數(shù)中的數(shù)值運(yùn)算,而是對(duì)邏輯變量的邏輯運(yùn)算。邏輯代數(shù)正是描述這些邏輯關(guān)系的一種數(shù)學(xué)方法。邏輯代數(shù)又稱為布爾代數(shù),其最基本的運(yùn)算有與、或、非三種,有八個(gè)基本定律、五個(gè)常用公式和三個(gè)基本運(yùn)算規(guī)則。
與運(yùn)算
只有當(dāng)決定事務(wù)結(jié)果的全部條件同時(shí)具備時(shí),結(jié)果才會(huì)發(fā)生,這樣的因果關(guān)系稱為與邏輯。邏輯函數(shù)表達(dá)式為:
Y=AB
只有當(dāng)輸入A和B都為“1”時(shí),邏輯輸出Y才為“1”,其他情況都為“0”,即“全1出1,有0出0”。
或運(yùn)算
在決定事物結(jié)果的諸條件中只要有一個(gè)滿足,結(jié)果就會(huì)發(fā)生,這樣的邏輯關(guān)系稱為或邏輯。邏輯函數(shù)表達(dá)式為:
Y=A + B
只要邏輯輸入A或B中有一個(gè)為“1”,輸出Y就為“1”,而當(dāng)輸入全為“0”時(shí),輸出才為“0”,即“有1出1,全0出0”。
非運(yùn)算
決定事物的條件具備了,結(jié)果卻不發(fā)生,而此條件不具備時(shí),結(jié)果一定發(fā)生,這樣的因果關(guān)系叫非邏輯。邏輯函數(shù)表達(dá)式為:
Y=
非邏輯的輸出總是輸入的取反,即輸入為“1”,輸出為“0”;輸入為“0”,輸出為“1”。實(shí)際的邏輯問(wèn)題往往比以上三種基本邏輯復(fù)雜得多,但它們都是由基本的與、或、非邏輯導(dǎo)出來(lái)的,因此稱其為導(dǎo)出邏輯或復(fù)合邏輯。最常見(jiàn)的導(dǎo)出邏輯有與非、或非、與或非、異或以及同或等。
二進(jìn)制字表示數(shù)據(jù)
一個(gè)二進(jìn)制位只允許描述兩種可能的值,所以單位的二進(jìn)制變量本身的應(yīng)用是很有限的,但可以通過(guò)將二進(jìn)制定義為合適的組合方式,用二進(jìn)制字來(lái)表示想要表示的任何事物。這是用二進(jìn)制數(shù)來(lái)解決現(xiàn)實(shí)問(wèn)題的關(guān)鍵所在。
例如,有N個(gè)二進(jìn)制位的二進(jìn)制字
Info=XN-1XN-2XN-3…X2X1X0
具有2N種可能組合,就可以表示2N種不同情形,也即數(shù)據(jù)信息。為方便起見(jiàn),引進(jìn)一些術(shù)語(yǔ)來(lái)處理二進(jìn)制數(shù)組。一組二進(jìn)制數(shù)通常被稱為字,而不考慮它使用的二進(jìn)制數(shù)的位數(shù)。上面的Info是用N位二進(jìn)制位表示的字,根據(jù)系統(tǒng)的不同,一個(gè)字中位(bit)數(shù)可能很重要,也可能不重要。在微計(jì)算機(jī)領(lǐng)域,字節(jié)指的是8bit字。討論二進(jìn)制系統(tǒng)時(shí),經(jīng)常引進(jìn)一些2的冪次方的縮寫,概括如下圖所示。
數(shù)據(jù)來(lái)源:
在用二進(jìn)制數(shù)表示我們需要表達(dá)的事物時(shí),首先要把二進(jìn)制數(shù)定義為合適的方式,人為地賦予這些“0”“1”代碼特定的含義。這種給二進(jìn)制數(shù)組定義特定含義的過(guò)程稱為編碼。例如:當(dāng)要用二進(jìn)制字來(lái)表示紅綠燈的通斷狀態(tài)時(shí),可以采用兩位二進(jìn)制數(shù)D=D0D1來(lái)表示,定義D0位表示紅綠燈,D1位表示通斷狀態(tài),則編碼如下:
00—紅燈亮 01—紅燈熄 10—綠燈亮 11—綠燈熄
D0和D1都是二進(jìn)制位,且相互獨(dú)立,上面D0表示紅綠燈兩種事物,D1表示燈的通斷兩種狀態(tài)。這樣,就把現(xiàn)實(shí)情形表達(dá)成了數(shù)字電路可以識(shí)別的“0”“1”代碼,完成了編碼過(guò)程。當(dāng)需要表達(dá)現(xiàn)實(shí)世界中事物的不同情形時(shí),只要有足夠多的二進(jìn)制位,任何情形都可以用二進(jìn)制數(shù)組來(lái)表示,假設(shè)有m種情形,需要的二進(jìn)制位為則n,則n為滿足關(guān)系2n≥m的最小正整數(shù)。可見(jiàn),編碼為需要表達(dá)的現(xiàn)實(shí)情形和數(shù)字系統(tǒng)的數(shù)據(jù)信息提供了一個(gè)溝通的橋梁,使它們一一對(duì)應(yīng)起來(lái)。這是用二進(jìn)制數(shù)解決現(xiàn)實(shí)世界問(wèn)題的關(guān)鍵所在。相反,數(shù)字系統(tǒng)處理完后,信息是以“0”“1”代碼的形式輸出的。要把處理結(jié)果返回給現(xiàn)實(shí)世界,就必須要將這些信息重新翻譯成為人們可以理解的現(xiàn)實(shí)語(yǔ)言。這種把二進(jìn)制數(shù)解釋成應(yīng)用的過(guò)程稱為解碼。一個(gè)系統(tǒng)的編解碼過(guò)程如下圖:
數(shù)據(jù)來(lái)源:
計(jì)算機(jī)領(lǐng)域廣泛采用二進(jìn)制的原因
當(dāng)二進(jìn)制用來(lái)表示大數(shù)的時(shí)候,書(shū)寫起來(lái)比較長(zhǎng),但是對(duì)于電子計(jì)算機(jī)來(lái)說(shuō),二進(jìn)制卻非常方便,因?yàn)樗幸韵滤膫€(gè)優(yōu)點(diǎn):
電路中容易實(shí)現(xiàn)
二進(jìn)制只有兩個(gè)數(shù)字符號(hào)“0”和“1”,所以計(jì)算機(jī)的設(shè)計(jì)只要找到一種具有兩個(gè)穩(wěn)定狀態(tài)的元件即可。如果使用十進(jìn)制就需要十個(gè)穩(wěn)定狀態(tài)的元件,使得技術(shù)困難、線路復(fù)雜、造價(jià)昂貴、可靠性低。當(dāng)計(jì)算機(jī)工作的時(shí)候,電路通電工作,于是每個(gè)輸出端就有了電壓。電壓的高低通過(guò)模數(shù)轉(zhuǎn)換即轉(zhuǎn)換成了二進(jìn)制:高電平由1表示,低電平由0表示。也就是說(shuō)將模擬集成電路轉(zhuǎn)換為數(shù)字電路。這里的高電平與低電平可以人為確定,一般地,2.5V以下為低電平,3.2V以上為高電平。二進(jìn)制數(shù)碼只有兩個(gè)—“0”和“1”。電路只要能識(shí)別低、高就可以表示“0”和“1”。
物理上最易實(shí)現(xiàn)存儲(chǔ)
第二是用二進(jìn)制來(lái)表示數(shù)可以盡量少用元件,對(duì)于某一個(gè)自然數(shù)m,如果用k進(jìn)制來(lái)表示m時(shí),位數(shù)為n,需要元件的總數(shù)為s,那么s=nk。以十進(jìn)制自然數(shù)15為例,用十進(jìn)制來(lái)表示需要10×2=20個(gè)元件;而用二進(jìn)制來(lái)表示,只需要2×4=8個(gè)元件;二進(jìn)制在物理上最易實(shí)現(xiàn)存儲(chǔ),通過(guò)磁極的取向、表面的凹凸、光照的有無(wú)等來(lái)記錄。對(duì)于只寫一次的光盤,將激光聚成1~2微米的小光束,依靠熱的作用融化盤片表面上的合金薄膜,在薄膜上形成小洞(凹坑),記錄下“1”,原來(lái)的位置表示記錄“0”。
便于進(jìn)行加、減運(yùn)算和計(jì)數(shù)編碼
第三是二進(jìn)制的四則運(yùn)算比較簡(jiǎn)單,只要記住加法和乘法的口訣各4個(gè):0+0=0,0+1=1,1+0=1,1+1=10;0×0=0,0×1=0,1×0=0,1×1=1,可以大大提高運(yùn)算速度;二進(jìn)制與十進(jìn)制數(shù)易于互相轉(zhuǎn)換,簡(jiǎn)化運(yùn)算規(guī)則。兩個(gè)二進(jìn)制數(shù)和、積運(yùn)算組合各有三種,運(yùn)算規(guī)則簡(jiǎn)單,有利于簡(jiǎn)化計(jì)算機(jī)內(nèi)部結(jié)構(gòu),提高運(yùn)算速度。數(shù)據(jù)在計(jì)算機(jī)中以器件的物理狀態(tài)表示,采用二進(jìn)制數(shù)字電路,計(jì)算機(jī)處理所有的字符或符號(hào)也要用二進(jìn)制編碼來(lái)表示用二進(jìn)制的優(yōu)點(diǎn)是容易表示,運(yùn)算規(guī)則簡(jiǎn)單,節(jié)省設(shè)備。人們知道,具有兩種穩(wěn)定狀態(tài)的元件(如晶體管的導(dǎo)通和截止,繼電器的接通和斷開(kāi),電脈沖電平的高低等)容易找到,而要找到具有10種穩(wěn)定狀態(tài)的元件來(lái)對(duì)應(yīng)十進(jìn)制的10個(gè)數(shù)就困難了。
便于邏輯判斷(是或非)
第四是二進(jìn)制方便進(jìn)行各種邏輯運(yùn)算。二進(jìn)制的兩個(gè)變量0和1,可以分別看成是真命題與假命題的邏輯值,從而進(jìn)行二值邏輯運(yùn)算。因?yàn)槊课粩?shù)據(jù)只有高低兩個(gè)狀態(tài),當(dāng)受到一定程度的干擾時(shí),仍能可靠地分辨出它是高還是低。
二進(jìn)制的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
二進(jìn)制優(yōu)點(diǎn)是所使用的符號(hào)最少,僅有0,1兩個(gè),表示簡(jiǎn)單且設(shè)備表示容易。比如,用燈“亮”表示“1”,“不亮”表示“0”;開(kāi)關(guān)“開(kāi)”表示“1”,“關(guān)”表示“0”,只要某個(gè)設(shè)備具有兩種穩(wěn)定狀態(tài),就可用來(lái)表征二進(jìn)制數(shù)的兩個(gè)狀態(tài);二進(jìn)制運(yùn)算簡(jiǎn)單,運(yùn)算速度快,用電路實(shí)現(xiàn)容易;用二進(jìn)制可以用邏輯代數(shù)作為工具進(jìn)行邏輯分析、邏輯設(shè)計(jì)、簡(jiǎn)化電路,節(jié)省器件,降低造價(jià)。
缺點(diǎn)
二進(jìn)制的缺點(diǎn)是與人們長(zhǎng)期使用的十進(jìn)制不同,寫出的數(shù)字符號(hào)個(gè)數(shù)多、位數(shù)長(zhǎng),比如十進(jìn)制的“9”用二進(jìn)制表示則為“1001”。又由于數(shù)字符號(hào)僅有0、1兩個(gè),易于寫錯(cuò)。
二進(jìn)制的應(yīng)用
用于計(jì)算機(jī)編碼
二進(jìn)制是計(jì)算機(jī)唯一能夠識(shí)別的機(jī)器語(yǔ)言,電子計(jì)算機(jī)的通用語(yǔ)言都是二進(jìn)制,在這樣一個(gè)前提下,ASCII等編碼技術(shù)逐漸出現(xiàn)。就計(jì)算機(jī)領(lǐng)域而言,數(shù)制轉(zhuǎn)換通常涉及到十進(jìn)制到二進(jìn)制、十進(jìn)制到十六進(jìn)制、二進(jìn)制到十六進(jìn)制、二進(jìn)制到十進(jìn)制、十六進(jìn)制到二進(jìn)制、十六進(jìn)制到十進(jìn)制的轉(zhuǎn)換以及ASCII碼的生成等。
ASCII碼—美國(guó)信息交換標(biāo)準(zhǔn)代碼
計(jì)算機(jī)內(nèi)存儲(chǔ)的信息包括數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù)兩類,非數(shù)值數(shù)據(jù)主要包括文字、圖片、聲音等;在計(jì)算機(jī)中,各種信息都是以二進(jìn)制編碼的形式存在的,即都是以0和1組成的二進(jìn)制代碼表示的。本文討論了各種非數(shù)值數(shù)據(jù)的表示形式。字符的編碼采用國(guó)際通用的ASCII碼(American Standard Codefor Information Interchange,美國(guó)信息交換標(biāo)準(zhǔn)代碼),ASCII碼用一個(gè)字節(jié)編碼,可表示256(28)個(gè)不同字符。當(dāng)用戶從鍵盤敲入A時(shí)存儲(chǔ)到計(jì)算機(jī)內(nèi)部的是A的ASCII:01000001,這個(gè)轉(zhuǎn)換工作由輸入設(shè)備完成,鍵盤、鼠標(biāo)是最常用的輸入設(shè)備。
ASCII碼使用指定的7位或8位二進(jìn)制數(shù)組合來(lái)表示128或256種可能的字符。ASCII碼使用7位二進(jìn)制數(shù)(剩下的1位二進(jìn)制為0)來(lái)表示所有的大寫和小寫字母,數(shù)字0到9、標(biāo)點(diǎn)符號(hào),以及在英語(yǔ)中使用的特殊控制字符。其中,第0~32號(hào)和第127號(hào)是不可見(jiàn)的,但它們都有一些特殊功能,所以稱為控制字符。第33~126號(hào)是字符,其中第48~57號(hào)為0~9十個(gè)阿拉伯?dāng)?shù)字,65~90號(hào)為26個(gè)大寫英文字母,97~122號(hào)為26個(gè)小寫英文字母,其余為一些標(biāo)點(diǎn)符號(hào)、運(yùn)算符號(hào)等。
漢字編碼
1980年,中國(guó)頒布的《信息交換用漢字編碼字符集—基本集》,即國(guó)家標(biāo)準(zhǔn)GB2312—80方案中規(guī)定用兩個(gè)字節(jié)的16位二進(jìn)制表示1個(gè)漢字,每個(gè)字節(jié)都只使用低7位(與ASCII碼相同),即有128×128=16384種狀態(tài)。但國(guó)標(biāo)碼GB2312不能直接在計(jì)算機(jī)中使用,比如“大”的國(guó)標(biāo)碼時(shí)3473H,與字符組合“4S”的ASCII相同,為了能區(qū)分漢字與ASCII碼,在計(jì)算機(jī)內(nèi)部表示漢字時(shí)把交換碼(國(guó)標(biāo)碼)兩個(gè)字節(jié)最高位改為1,稱為“機(jī)內(nèi)碼”。這樣:漢字“大”在計(jì)算機(jī)內(nèi)部存儲(chǔ)的是它的機(jī)內(nèi)碼:1011010011110011。
其他應(yīng)用
計(jì)算機(jī)是信息處理的工具。但是,任何形式的信息,不論是數(shù)字、文字、聲音、圖形,還是其他類型的信息,它們都必須轉(zhuǎn)換成二進(jìn)制形式的表示后,才能由計(jì)算機(jī)進(jìn)行處理、存儲(chǔ)和傳輸,諸如加密解密算法、格式存儲(chǔ)、網(wǎng)絡(luò)通信、圖形與圖像等領(lǐng)域。
二進(jìn)制流的加密解密算法
二進(jìn)制流的加解密算法可以用任意序列作為密鑰,不同于傳統(tǒng)的流密碼是基于一些原理生成偽隨機(jī)密鑰,二進(jìn)制流的加密解密算法設(shè)計(jì)極其簡(jiǎn)單,它把一組任意長(zhǎng)度的二進(jìn)制流作為密鑰,把密鑰對(duì)應(yīng)位置(0或1)的明文信息(0或1)重新排列到密文空間中,如此循環(huán),直至加密完成。
傳統(tǒng)流密碼的加解密過(guò)程圖解如下圖:
二進(jìn)制流加解密圖解過(guò)程圖解如下圖:
數(shù)據(jù)來(lái)源:
二進(jìn)制格式存儲(chǔ)
二進(jìn)制文件是指以二進(jìn)制模式存儲(chǔ)在內(nèi)存中的文件。這類文件無(wú)法使用文本編輯器復(fù)制二進(jìn)制文件的內(nèi)容。二進(jìn)制文件通常具有處理速度快、占用空間少等優(yōu)點(diǎn)。Python同樣支持二進(jìn)制文件的打開(kāi)、關(guān)閉、讀取、寫入等基本的操作函數(shù)。
二進(jìn)制網(wǎng)絡(luò)通信
網(wǎng)絡(luò)上用于數(shù)據(jù)傳輸?shù)幕締挝皇菙?shù)據(jù)包(packet)物理層和數(shù)據(jù)路層的分組也稱為幀(frame)。網(wǎng)絡(luò)媒體(network medium)本質(zhì)上就是在各種設(shè)備之間的光、電連接。要能夠在網(wǎng)絡(luò)媒體上傳輸數(shù)據(jù),首先要用某種編碼方法將其轉(zhuǎn)換成以電流或光脈沖表示的二進(jìn)制位。網(wǎng)絡(luò)都包括以下幾個(gè)部分:第一是用以在網(wǎng)絡(luò)設(shè)備間實(shí)現(xiàn)信號(hào)傳輸?shù)奈锢砻襟w;第二是由一組標(biāo)準(zhǔn)的二進(jìn)制位組成的數(shù)據(jù)包或結(jié)構(gòu);第三是一組媒體訪問(wèn)控制規(guī)則,多個(gè)網(wǎng)絡(luò)設(shè)備通過(guò)它來(lái)控制對(duì)共享網(wǎng)絡(luò)媒體的訪問(wèn)。
圖形與圖像
人類視覺(jué)系統(tǒng)所感知的信息形式或人們心目中的有形想象都稱為圖像。無(wú)論是圖形,還是文字、影像視頻等,最終都是以圖像形式出現(xiàn)的。其中圖像深度是指一幅位圖圖像中最多使用的顏色數(shù)。由于每個(gè)像素上的顏色被量化后將用顏色值來(lái)表示,所以在位圖圖像中每個(gè)像素所占位數(shù)就被稱為圖像深度。若每個(gè)像素只有一位顏色位則該像素只能表示亮或暗,這就是二值圖像。若每個(gè)像素有8位顏色位,則在一副圖像中可以有28=256種不同的顏色,若每個(gè)像素具有16位顏色位,則可使用的顏色數(shù)達(dá)216=65536種,顯示深度表示顯示器上每個(gè)點(diǎn)用于顯示顏色的二進(jìn)制數(shù)字位數(shù)。若顯示器的顯示深度小于數(shù)字圖像的深度,就會(huì)使數(shù)字圖像顏色的顯示失真。
數(shù)據(jù)來(lái)源:
參考資料 >