涂小圖
在日常生活中,我們的大腦對(duì)很多事物都形成了習(xí)慣。比如數(shù)字,習(xí)慣于使用十進(jìn)制的我們能夠輕易地算出“1+1=2”,但是卻很難對(duì)計(jì)算機(jī)里的二進(jìn)制數(shù)字有直觀的感受。十進(jìn)制在今天的普遍使用,只不過是人類在生物學(xué)上一次偶然進(jìn)化的結(jié)果而已:我們當(dāng)中的絕大多數(shù)人,生來就有10個(gè)手指、10個(gè)腳趾。除了十進(jìn)制,二進(jìn)制、八進(jìn)制等其他進(jìn)制又有什么不同呢?
十進(jìn)制與二進(jìn)制
十進(jìn)制計(jì)數(shù)的規(guī)則:①基數(shù)為10;②有0—9共10個(gè)數(shù)字;③逢10進(jìn)1,借1當(dāng)10。
二進(jìn)制計(jì)數(shù)的規(guī)則:①基數(shù)為2;②有2個(gè)數(shù)字,即0和1;③逢2進(jìn)1,借1當(dāng)2。
十進(jìn)制數(shù)可以由多位組成,從右向左依次為個(gè)位、十位、百位、千位、萬(wàn)位,等等;與此類似,二進(jìn)制也可以由多位數(shù)組成,從右向左分別為1位、2位、4位、8位、16位,等等。同學(xué)們是不是感覺二進(jìn)制的位數(shù)很奇怪,中間似乎還缺了好多位?其實(shí)這是我們從十進(jìn)制數(shù)的角度來看二進(jìn)制數(shù)而產(chǎn)生的一種錯(cuò)覺。
如上表所示,當(dāng)二進(jìn)制產(chǎn)生進(jìn)位時(shí),對(duì)應(yīng)的十進(jìn)制數(shù)為2、4、8、16、32、64、128……二進(jìn)制雖然只有0和1兩個(gè)數(shù)字,但是由于數(shù)字所處的位置不同,表示的數(shù)據(jù)也不同。例如二進(jìn)制數(shù)1011共有4位,由3個(gè)1和1個(gè)0組成,各個(gè)數(shù)字所處位置不同,所代表的大小也不同,各個(gè)數(shù)字所處位置在數(shù)學(xué)上稱作“權(quán)”。
二進(jìn)制數(shù)1011從右向左順序各位表示的含義:第一個(gè)1表示1的個(gè)數(shù),第二個(gè)1表示2的個(gè)數(shù),第三個(gè)0表示4的個(gè)數(shù),第四個(gè)1表示8的個(gè)數(shù)。同學(xué)們可以類比一下:十進(jìn)制數(shù)1011是由1個(gè)1000、0個(gè)100、1個(gè)10、1個(gè)1組成的;二進(jìn)制數(shù)1011是由1個(gè)23、0個(gè)22、1個(gè)21、1個(gè)20組成的。
按二進(jìn)制數(shù)1011各位的權(quán)列出:1101(二進(jìn)制)=1×23+0×22+1×21+1×20=11,按這種權(quán)展開式,可以很方便地將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。
相應(yīng)地,十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)通常采用“除2取余,逆序排列”的方法。具體做法是用2整除十進(jìn)制數(shù),可以得到一個(gè)商和余數(shù);再用2去除商,又會(huì)得到一個(gè)商和余數(shù);如此反復(fù),直到商為0而止。然后,再把先得到的余數(shù)作為二進(jìn)制低位,后得到的余數(shù)作為二進(jìn)制高位,依次排列。
舉個(gè)例子,將十進(jìn)制數(shù)11轉(zhuǎn)換為二進(jìn)制數(shù)1011:
11÷2=5……1
5÷2=2……1
2÷2=1……0
1÷2=0……1
目前幾乎所有的計(jì)算機(jī)內(nèi)部的邏輯電路都采用了二進(jìn)制,這是因?yàn)殡娐分型ǔV挥袃蓚€(gè)狀態(tài),如開關(guān)的“開”和“關(guān)”、電壓的“高”和“低”、電流的“正”和“負(fù)”等,這些狀態(tài)正好可以用數(shù)字“1”和“0”表示,十分方便。采用二進(jìn)制可以使計(jì)算機(jī)的結(jié)構(gòu)更加簡(jiǎn)單可靠,提高計(jì)算速度。
二進(jìn)制的計(jì)算規(guī)則
【加法】只有以下4種可能(逢2進(jìn)1):
0+0=0
0+1=1
1+0=1
1+1=10
對(duì)于多位二進(jìn)制數(shù)相加,進(jìn)位采用“逢2進(jìn)1”的方式,如表2所示,同學(xué)們可以動(dòng)手列出豎式嘗試計(jì)算。
對(duì)于多位二進(jìn)制數(shù)相減,借位采用“借1當(dāng)2”的方式,如表3所示,同學(xué)們可以動(dòng)手列出豎式嘗試計(jì)算。
【乘法】只有4種可能:
0×0=0
1×0=0
0×1=0
1×1=1
十進(jìn)制的乘法怎么算?相信這可難不倒各位同學(xué),畢竟大家在小學(xué)時(shí)就已經(jīng)把九九乘法表(乘法口訣)背得滾瓜爛熟了,而二進(jìn)制的乘法規(guī)則相對(duì)來說還要更簡(jiǎn)單。二進(jìn)制的乘法可以很簡(jiǎn)單地轉(zhuǎn)換為各位的加法運(yùn)算,如表4所示,同學(xué)們可以動(dòng)手列出豎式嘗試計(jì)算。
我們知道,除法是乘法的逆運(yùn)算,二進(jìn)制乘法有4種可能,那除法為什么只有2種呢?這是因?yàn)?作為除數(shù)是沒有意義的。如表5所示,同學(xué)們可以動(dòng)手列出豎式嘗試計(jì)算。
至于比較復(fù)雜的乘法和除法運(yùn)算,都能簡(jiǎn)單地轉(zhuǎn)換為加、減和各位的位移操作,所以一般簡(jiǎn)單的計(jì)算機(jī)只需設(shè)計(jì)一個(gè)加法器來控制位數(shù)變動(dòng)即可。
古代也有進(jìn)制概念
明白了二進(jìn)制的原理,八進(jìn)制也就很容易懂了。其實(shí)我們可以從中國(guó)古代歷史中找到二進(jìn)制、八進(jìn)制的概念,比如八卦。八卦最初其實(shí)是古人的一種哲學(xué)思想、文字的表述符號(hào),只是后來因?yàn)楸徊簧佟八忝壬庇脕砗鲇迫耍淮蛏戏饨孕诺臉?biāo)簽。在八卦中,其實(shí)也有二進(jìn)制和八進(jìn)制的概念,八卦的基本元素就是陰和陽(yáng),我們可以把它們看作二進(jìn)制中的0和1。需要說明的是,八卦和現(xiàn)代計(jì)算機(jī)中的二進(jìn)制原理并無(wú)關(guān)系,僅僅是一種思想上的巧合。
在上圖中長(zhǎng)實(shí)線代表“陽(yáng)”,用中間斷開的線代表“陰”。3種這樣的線條組成8種形狀,相當(dāng)于用3位二進(jìn)制數(shù)表示8種狀態(tài)。
在現(xiàn)代,八進(jìn)制計(jì)數(shù)通常采用0—7的阿拉伯?dāng)?shù)字表示。八進(jìn)制計(jì)數(shù)的規(guī)則:①基數(shù)為8;②由8個(gè)數(shù)字組成,分別是0、1、2、3、4、5、6、7;③逢8進(jìn)1,借1當(dāng)8。
十進(jìn)制數(shù)與其他進(jìn)制數(shù)的轉(zhuǎn)換
上文中將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的方法“按權(quán)展開”,同樣適用于將其他進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。請(qǐng)看下面這條按權(quán)展開公式,學(xué)習(xí)了數(shù)列知識(shí)的同學(xué),是不是感覺很親切呢?
(B表示各進(jìn)制的基數(shù),n表示位數(shù))
類似地,十六進(jìn)制計(jì)數(shù)的規(guī)則:①基數(shù)為16;②由16個(gè)數(shù)字(符號(hào))組成,分別是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F;③逢16進(jìn)1,借1當(dāng)16。例如同學(xué)們可以動(dòng)手試一試將十六進(jìn)制數(shù)BC0D轉(zhuǎn)換為十進(jìn)制數(shù):
BC0D(十六進(jìn)制)
=11×16(4-1)+12×16(3-1)+0×16(2-1)+13×16(1-1)
=48141
此外,我們使用上文中提到的將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)的“除基數(shù)B取余,逆序排列”方法,同樣可以將十進(jìn)制數(shù)方便地轉(zhuǎn)換為其他進(jìn)制的數(shù)。