十進(jìn)制計數(shù)法是世界各國常用的一種記數(shù)方法。也是我們從小學(xué)就開始學(xué)習(xí)的計數(shù)法。特點(diǎn)是相鄰兩個單位之間的進(jìn)率都是十。10個較低的單位等于1個相鄰的較高單位。常說“滿十進(jìn)一”,這種以“十”為基數(shù)的進(jìn)位制,叫做十進(jìn)制。
除了十進(jìn)制你還知道其他的進(jìn)制計數(shù)法嗎?有點(diǎn)電腦基礎(chǔ)的還能說出個二進(jìn)制,再要說出更多來估計就要撓破頭皮了。其實結(jié)合下我們的生活你會發(fā)現(xiàn)很多進(jìn)制計數(shù)法我們平常都一直在使用,卻不自知。
一打啤酒是12瓶,每12瓶就是一打,這個就叫做十二進(jìn)制
“半斤八兩”一詞是個常用成語,很多人卻忘了我們中國所用的稱重單位斤和兩,一斤=16兩,每滿16兩是一斤,這就叫做十六進(jìn)制。
用心觀察下我們生活,你會發(fā)現(xiàn)“數(shù)學(xué)知識來源于生活實際”
對于程序員來說在學(xué)習(xí)了 10進(jìn)制和 2進(jìn)制兩種計數(shù)法,這些方法一般稱作按位計數(shù)法。除了 10進(jìn)制和 2進(jìn)制以外,還有許多種類的按位計數(shù)法。在編程中,也常常使用 8進(jìn)制和 16進(jìn)制計數(shù)法。
編程中常見的計數(shù)法
●8進(jìn)制計數(shù)法
8進(jìn)制計數(shù)法的特征如下:
使用的數(shù)字有0、1、2、3、4、5、6、7共 8種。
80的位、81的位、82的位、83的位……(基數(shù)是8)
●16進(jìn)制計數(shù)法
16進(jìn)制計數(shù)法的特征如下:
使用的數(shù)字有0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F共 16種。
160的位、161的位、162的位、163的位……(基數(shù)是16)
在 16進(jìn)制計數(shù)法中,使用 A、B、C、D、E、F(有時也使用小寫字母 a、b、c、d、e、
f)來表示 10以上的數(shù)字。
● N進(jìn)制計數(shù)法
一般來說, N進(jìn)制計數(shù)法的特征如下:
使用的數(shù)字有0,1,2,3,…, N-1,共 N種。
N 0的位、N 1的位、N 2的位、N 3的位……(基數(shù)是 N)
例如, N進(jìn)制計數(shù)法中, 4位數(shù) a3a2a1a0為
a3× N3+ a2× N2+ a1× N1+ a0× N0(a3、a2、a1、a0是0~N-1中的數(shù)字。)
一、常見進(jìn)制數(shù)之間的算關(guān)系表:
二進(jìn)制 | 八進(jìn)制 | 十進(jìn)制 | 十六進(jìn)制 |
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
10 | 2 | 2 | 2 |
11 | 3 | 3 | 3 |
100 | 4 | 4 | 4 |
101 | 5 | 5 | 5 |
110 | 6 | 6 | 6 |
111 | 7 | 7 | 7 |
1000 | 10 | 8 | 8 |
1001 | 11 | 9 | 9 |
1010 | 12 | 10 | A |
1011 | 13 | 11 | B |
1100 | 14 | 12 | C |
1101 | 15 | 13 | D |
1110 | 16 | 14 | E |
1111 | 17 | 15 | F |
二、 二進(jìn)制換算成八進(jìn)制和十六進(jìn)制的方法
如二進(jìn)制的“10110111011”:
換八進(jìn)制時,從右到左,三位一組,不夠補(bǔ)0,即成了:
010 110 111 011
然后每組中的3個數(shù)分別對應(yīng)4、2、1的狀態(tài),然后將為狀態(tài)為1的相加【備注】,如:
010 = 2
110 = 4+2 = 6
111 = 4+2+1 = 7
011 = 2+1 = 3
結(jié)果為:2673
而換十六進(jìn)制時其實也類似,只要每組4位,分別對應(yīng)8、4、2、1就行了,如分解為:
0101 1011 1011
運(yùn)算為:
0101 = 4+1 = 5
1011 = 8+2+1 = 11(由于10為A,所以11即B)
1011 = 8+2+1 = 11(由于10為A,所以11即B)
結(jié)果為:5BB
注意,二進(jìn)制數(shù)轉(zhuǎn)化為八進(jìn)制數(shù)、十六進(jìn)制數(shù)時,對于分組,整數(shù)部分是從右向左分組,不夠在左邊補(bǔ)0,而小數(shù)部分則是從左向右分組,不夠在右邊補(bǔ)0,
如二進(jìn)制小數(shù):
0.1100111
轉(zhuǎn)化為八進(jìn)制數(shù),應(yīng)分組為:0.110 011 100 ,轉(zhuǎn)化后為0.634
轉(zhuǎn)化為十六進(jìn)制數(shù),應(yīng)分組為:0.1100 1110,轉(zhuǎn)化后為0.CE
三、 二 八 十六進(jìn)制換算成十進(jìn)制
3.1 二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)
二進(jìn)制數(shù)第0位的權(quán)值是2的0次方,第1位的權(quán)值是2的1次方……
所以,設(shè)有一個二進(jìn)制數(shù):0110 0100,轉(zhuǎn)換為10進(jìn)制為:
下 面是豎式:
0110 0100 換算成 十進(jìn)制
第0位 0*20 = 0
第1位 0*21 = 0
第2位 1*22 = 4
第3位 0*23 = 0
第4位 0*24 = 0
第5位 1*25 = 32
第6位 1*26 = 64
第7位 0*27 = 0 +
---------------------------
100
用橫式計算為:
0*20 + 0*21 + 1*22 + 1*23 + 0*24 + 1*25 + 1*26 + 0*27 = 100
3.2 八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)
八進(jìn)制就是逢8進(jìn)1。
八進(jìn)制數(shù)采用 0~7這八數(shù)來表達(dá)一個數(shù)。
八進(jìn)制數(shù)第0位的權(quán)值為8的0次方,第1位權(quán)值為8的 1次方,第2位權(quán)值為8的2次方……
所以,設(shè)有一個八進(jìn)制數(shù):1507,轉(zhuǎn)換為十進(jìn)制為:
用豎式表示:
1507 換算成十進(jìn)制。
第0位 7*80 = 7
第1位 0*81 = 0
第2位 5*82 = 320
第 3位 1*83 = 512 +
--------------------------
839
3.3 十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)
16進(jìn)制就是逢16進(jìn)1,但我們只有0~9這十個數(shù)字,所以我們用A,B,C,D,E,F(xiàn)這五個字母來分別表示 10,11,12,13,14,15。字母不區(qū)分大小寫。
十六進(jìn)制數(shù)的第0位的權(quán)值為16的0次方,第1位的權(quán)值為16的1次方,第2位的 權(quán)值為16的2次方……
所以,在第N(N從0開始)位上,如果是是數(shù) X (X 大于等于0,并且X小于等于 15,即:F)表示的大小為 X 16的N次方。
假設(shè)有一個十六進(jìn)數(shù) 2AF5, 那么如何換算成10進(jìn)制呢?
用豎式計算:
2AF5 換算成10進(jìn)制:
第0位: 5*160 = 5
第1位: F*161 = 240
第2位: A*162 = 2560
第3位: 2*163 = 8192 +
-------------------------------------
10997
(別 忘了,在上面的計算中,A表示10,而F表示15)
四、十進(jìn)制換算成二 、八、十六進(jìn)制
以十進(jìn)制的數(shù)除以所要轉(zhuǎn)換的進(jìn)制數(shù),把每次除得的余數(shù)記在旁邊,所得的商數(shù)繼續(xù)除以進(jìn)制數(shù),直到余數(shù)為0時止.例如要把100轉(zhuǎn)換成八進(jìn)制:
100/8=12...(余數(shù)為4);
12/8=1.....(余數(shù)為4);
1/8=0......(余數(shù)為1);
然后把相應(yīng)的余數(shù)從低向高順著寫出來,如上的為144,此即為100的八進(jìn)制表示形式.
十進(jìn)制轉(zhuǎn)換為十六進(jìn)制與二進(jìn)制與前面的轉(zhuǎn)化為八進(jìn)制相同,如100轉(zhuǎn)換為十六進(jìn)制:
100/16=6....(余數(shù)為4);
6/16=0......(余數(shù)為6);
則以十六進(jìn)制表示的100形式為64;
十進(jìn)制轉(zhuǎn)換為二進(jìn)制: 整數(shù)部分按除2取余,小數(shù)部分按乘2取整
例:
50/2 ........ 余0
25/2 ........ 余1
12/2 ........ 余0
6/2 ........ 余0
3/2 ........ 余1
1
50的二進(jìn)制就是 110010
小 數(shù)
0.25*2 ........ 0.5 整數(shù) 0
0.5*2 ........ 1.0 整數(shù) 1
0.25 的二進(jìn)制數(shù)就是 0.01
五、二、十六進(jìn)制數(shù)互相轉(zhuǎn)換
二進(jìn)制數(shù)要轉(zhuǎn)換為十六進(jìn)制,就是以4位一段,分別轉(zhuǎn)換為十六進(jìn)制。
如(上行為二制數(shù),下面為對應(yīng)的十六進(jìn)制):
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B
反過來,當(dāng)我們看到 F D時,如何迅速將它轉(zhuǎn)換為二進(jìn)制數(shù)呢?
先轉(zhuǎn)換F:
看到F,我們需知道它是15(可能你還不熟悉 A~F這五個數(shù)),然后15如何用8421湊呢?應(yīng)該是8 + 4 + 2 + 1,所以四位全為1 :1111。
接著轉(zhuǎn)換 D:
看 到D,知道它是13,13如何用8421湊呢?應(yīng)該是:8 + 2 + 1,即:1011。
所以,F(xiàn)D轉(zhuǎn)換為二進(jìn)制數(shù),為: 1111 1011
更多建議: