按位計數(shù)法

2018-08-04 19:42 更新
十進制計數(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ù)之間的算關系表:

二進制    八進制十進制十六進制
0000
1111
10222
11333
100444
101555
110666
111777
10001088
10011199
10101210A
10111311B
11001412C
11011513D
11101614E
11111715F

 

二、 二進制換算成八進制和十六進制的方法

 

如二進制的“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


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號