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