二進位、八進位、十進位和十六進位數之間的轉換方法

2021-01-14 機電技術與設計製造交流分享會

提示:點擊↑↑上方"機電技術與設計製造交流分享會"訂閱

   



  數制也稱計數制,是指用一組固定的符號和統一的規則來表示數值的方法。按進位的原則進行計數的方法,稱為進位計數制。比如,在十進位計數制中,是按照「逢十進一」的原則進行計數的。常見的數制有二進位、八進位、十進位和十六進位。文字、數字、聲音、圖形與圖像、視頻以及動畫等數據在計算機中是以二進位的形式存儲的。一般情況下,我們在數字後面用特定的字母(下標)表示該數的進位,表示方法為:B表示二進位,D表示十進位(D可省略),O表示八進位,H表示十六進位。如二進位數10101表示為(10101)B。

一、什麼是進位計數制

數制也稱計數制,是指用一組固定的符號和統一的規則來表示數值的方法。按進位的原則進行計數的方法,稱為進位計數制。比如,在十進位計數制中,是按照「逢十進一」的原則進行計數的。

常用進位計數制:

1、十進位(Decimal notation),有10個基數:0 ~~ 9 ,逢十進一;

2、二進位(Binary notation),有2 個基數:0 ~~ 1 ,逢二進一;

3、八進位(Octal notation),有8個基數:0 ~~ 7 ,逢八進一;

4、十六進位數(Hexdecimal notation),有16個基數:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六進一。

二、進位計數制的基數與位權

"基數"和"位權"是進位計數制的兩個要素。

1、基數:

所謂基數,就是進位計數制的每位數上可能有的數碼的個數。例如,十進位數每位上的數碼,有"0"、"1"、"3",…,"9"十個數碼,所以基數為10。

2、位權:

所謂位權,是指一個數值的每一位上的數字的權值的大小。例如十進位數4567從低位到高位的位權分別為100、101、102、103。因為:

4567=4x103+5x 102+6x 101 +7x100

3、數的位權表示:

任何一種數制的數都可以表示成按位權展開的多項式之和。

比如:十進位數的435.05可表示為:

435.05=4x102+3x 101+5x100+0x10-1 +5x 10-2

位權表示法的特點是:每一項=某位上的數字X基數的若干冪次;而冪次的大小由該數字所在的位置決定。


三、二進位數

計算機中為何採用二進位:二進位運算簡單、電路簡單可靠、邏輯性強。

1、定義:

按「逢二進一」的原則進行計數,稱為二進位數,即每位上計滿2 時 向高位進一。

2、特點:

每個數的數位上只能是0,1兩個數字;二進位數中最大數字是1,最小數字是0;基數為2;

比如:10011010與00101011是兩個二進位數。

3、二進位數的位權表示:

(1101.101)2=1x23+1x 22+0x 21+1x 20+1x2-1 +0x 2-2+1x2-3

4、二進位數的運算規則:

加法運算

① 0+0=0 ③ 1+1=10

② 0+1=1+0=1

乘法運算

① 0×0=0 ③ 1×1=1

② 0×1=1×0=0


四、八進位數

1、定義:

按「逢八進一」的原則進行計數,稱為八進位數,即每位上計滿8時向高位進一。

2、特點:

每個數的數位上只能是0、1、2、3、4、5、6、7八個數字;八進位數中最大數字是7,最小數字是0;基數為8;

比如:(1347)8與(62435)8是兩個八進位數。

3、八進位數的位權表示:

(107.13)8=1x 82+0x 81+7x 80+1x8-1 +3x 8-2


五、十六進位數

1、定義:

按「逢十六進一」的原則進行計數,稱為十六進位數,即每位上計滿16時向高位進一。

2、特點:

每個數的數位上只能是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六個數碼;十六進位數中最大數字是F,即15,最小數字是0;基數為16;

比如:(109)16與(2FDE)16是兩個十六進位數。

3、十六進位數的位權表示:

(109.13)16=1x 162+0x161+9x 160+1x16-1 +3x 16-2

(2FDE)16=2x 163+15x 162+13x 161+14x 160


六、常用計數制間的對應關係

二進位數、八進位數、十六進位數及十進位數是現代數字系統中常用的四種數制,這幾種進位制計數制之間的對應關係如表1所列。

表1 常用計數制數的表示方法

十進位數

二進位數

八進位數

十六進位數

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

17

10001

21

11

18

10010

22

12

19

10011

23

13

20

10100

24

14

32

100000

40

20

50

110010

62

32

60

111100

74

3C

64

1000000

100

40

100

1100100

144

64

255

11111111

377

FF

1000

1111101000

1750

3E8


七、數制間的轉換

1、十進位數轉換成非十進位數

(1)十進位整數轉換成非十進位整數

為什麼要進行數制間的轉換?

將數由一種數制轉換成另一種數制稱為數制間的轉換。

因為日常生活中經常使用的是十進位數,而在計算機中採用的是二進位數。所以在使用計算機時就必須把輸入的十進位數換算成計算機所能夠接受的二進位數。計算機在運行結束後,再把二進位數換算成人們所習慣的十進位數輸出。這兩個換算過程完全由計算機自動完成。

轉換方法

十進位整數化為非十進位整數採用「餘數法」,即除基數取餘數。

把十進位整數逐次用任意十制數的基數去除,一直到商是0 為止,然後將所得到的餘數由下而上排列即可。

十進位小數轉換成非十進位小數轉換方法

十進位小數轉換成非十進位小數採用「進位法」,即乘基數取整數。

把十進位小數不斷的用其它進位的基數去乘,直到小數的當前值等於0或滿足所要求的精度為止,最後所得到的積的整數部分由上而下排列即為所求。

2、非十進位數轉換成十進位數

非十進位數轉換成十制數採用「位權法」,即把各非十進位數按位權展開,然後求和。

3、二、八、十進位數之間轉換

(1)二進位 數與八進位數之間的轉換轉換方法

把二進位數轉換為八進位數時,按「三位並一位」的方法進行。

以小數點為界,將整數部分從右向左每三位一組,最高位不足三位時,添0補足三位;小數部分從左向右,每三位一組,最低有效位不足三位時,添0補足三位。然後,將各組的三位二進位數按權展開後相加,得到一位八進位數。

將八進位數轉換成二進數時,採用「一位拆三位」的方法進行。

即 把八進位數每位上的數用相應的三位二進位數表示。

二進位數與十六進位數之間的轉換轉換方法

a、把二進位數轉換為十六進位數時,按「四位並一位」的方法進行。

以小數點為界,將整數部分從右向左每四位一組,最高位不足四位時,添0補足四位;小數部分從左向右,每四位一組最低有效位不足四位時,添0補足四位。然後,將各組的四位二進位數按權展開後相加,得到一位十六進位數。

b、將十六進位數轉換成二進數時,採用「一位拆四位」的方法進行。

即 把十六進位數每位上的數用相應的四位二進位數表示。

 1、十進位(Decimal notation),有10個基數:0 ~~ 9 ,逢十進一;

 2、二進位(Binary notation),有2 個基數:0 ~~ 1 ,逢二進一;

 3、八進位(Octal notation),有8個基數:0 ~~ 7 ,逢八進一;

 4、十六進位數(Hexdecimal notation),有16個基數:0 ~~ 9,A,B,C,D,E,F (A=10,B=11,C=12,D=13,E=14,F=15) ,逢十六進一。

  十進位、二進位、八進位、十六進位之間的對應關係

十進位

二進位

八進位

十六進位

十進位

二進位

八進位

十六進位

0

0

0

0

9

1001

11

9

1

1

1

1

10

1010

12

A

2

10

2

2

11

1011

13

B

3

11

3

3

12

1100

14

C

4

100

4

4

13

1101

15

D

5

101

5

5

14

1110

16

E

6

110

6

6

15

1111

17

F

7

111

7

7

16

10000

20

10

8

1000

10

8

17

10001

21

11



"基數"和"位權"是進位計數制的兩個要素。


所謂基數,就是進位計數制的每位數上可能有的數碼的個數。例如,十進位數每位上的數碼,有"0"、"1"、"3",…,"9"十個數碼,所以基數為10。

所謂位權,是指一個數值的每一位上的數字的權值的大小。例如十進位數4567從低位到高位的位權分別為100、101、102、103。因為: 

4567=4x103+5x 102+6x 101 +7x100 

任何一種數制的數都可以表示成按位權展開的多項式之和。

比如:十進位數的435.05可表示為:

435.05=4x102+3x 101+5x100+0x10-1 +5x 10-2


位權表示法的特點是:每一項=某位上的數字X基數的若干冪次;而冪次的大小由該數字所在的位置決定。 



計算機中為何採用二進位:二進位運算簡單、電路簡單可靠、邏輯性強。


按「逢二進一」的原則進行計數,稱為二進位數,即每位上計滿2 時 向高位進一。


每個數的數位上只能是0,1兩個數字;二進位數中最大數字是1,最小數字是0;基數為2;

比如:10011010與00101011是兩個二進位數。



(1101.101)2=1x23+1x 22+0x 21+1x 20+1x2-1 +0x 2-2+1x2-3



加法運算 

① 0+0=0 ③ 1+1=10

② 0+1=1+0=1 


乘法運算 

① 0×0=0 ③ 1×1=1 

② 0×1=1×0=0



按「逢八進一」的原則進行計數,稱為八進位數,即每位上計滿8時向高位進一。


每個數的數位上只能是0、1、2、3、4、5、6、7八個數字;八進位數中最大數字是7,最小數字是0;基數為8;

比如:(1347)8與(62435)8是兩個八進位數。



(107.13)8=1x 82+0x 81+7x 80+1x8-1 +3x 8-2 


按「逢十六進一」的原則進行計數,稱為十六進位數,即每位上計滿16時向高位進一。


每個數的數位上只能是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六個數碼;十六進位數中最大數字是F,即15,最小數字是0;基數為16;

比如:(109)16與(2FDE)16是兩個十六進位數。



(109.13)16=1x 162+0x161+9x 160+1x16-1 +3x 16-2 

(2FDE)16=2x 163+15x 162+13x 161+14x 160 

二進位數、八進位數、十六進位數及十進位數是現代數字系統中常用的四種數制,這幾種進位制計數制之間的對應關係如表1所列。

表1 常用計數制數的表示方法

十進位數

二進位數

八進位數

十六進位數

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

16

10000

20

10

17

10001

21

11

18

10010

22

12

19

10011

23

13

20

10100

24

14

32

100000

40

20

50

110010

62

32

60

111100

74

3C

64

1000000

100

40

100

1100100

144

64

255

11111111

377

FF

1000

1111101000

1750

3E8




(1)十進位整數轉換成非十進位整數

①為什麼要進行數制間的轉換? 

將數由一種數制轉換成另一種數制稱為數制間的轉換。


因為日常生活中經常使用的是十進位數,而在計算機中採用的是二進位數。所以在使用計算機時就必須把輸入的十進位數換算成計算機所能夠接受的二進位數。計算機在運行結束後,再把二進位數換算成人們所習慣的十進位數輸出。這兩個換算過程完全由計算機自動完成。


②轉換方法

十進位整數化為非十進位整數採用「餘數法」,即除基數取餘數。

把十進位整數逐次用任意十制數的基數去除,一直到商是0 為止,然後將所得到的餘數由下而上排列即可。


②十進位小數轉換成非十進位小數轉換方法

十進位小數轉換成非十進位小數採用「進位法」,即乘基數取整數。

把十進位小數不斷的用其它進位的基數去乘,直到小數的當前值等於0或滿足所要求的精度為止,最後所得到的積的整數部分由上而下排列即為所求。



非十進位數轉換成十制數採用「位權法」,即把各非十進位數按位權展開,然後求和。 



(1)二進位 數與八進位數之間的轉換轉換方法

①把二進位數轉換為八進位數時,按「三位並一位」的方法進行。


以小數點為界,將整數部分從右向左每三位一組,最高位不足三位時,添0補足三位;小數部分從左向右,每三位一組,最低有效位不足三位時,添0補足三位。然後,將各組的三位二進位數按權展開後相加,得到一位八進位數。


②將八進位數轉換成二進數時,採用「一位拆三位」的方法進行。

即 把八進位數每位上的數用相應的三位二進位數表示。


③二進位數與十六進位數之間的轉換轉換方法

a、把二進位數轉換為十六進位數時,按「四位並一位」的方法進行。


以小數點為界,將整數部分從右向左每四位一組,最高位不足四位時,添0補足四位;小數部分從左向右,每四位一組最低有效位不足四位時,添0補足四位。然後,將各組的四位二進位數按權展開後相加,得到一位十六進位數。


b、將十六進位數轉換成二進數時,採用「一位拆四位」的方法進行。

即 把十六進位數每位上的數用相應的四位二進位數表示。 

數制的相關知識


數制的概述


雖然計算機能極快地進行運算,但其內部並不像人類在實際生活中使用的十進位,而是使用只包含0和1兩個數值的二進位。當然,人們輸入計算機的十進位被轉換成二進位進行計算,計算後的結果又由二進位轉換成十進位,這都由作業系統自動完成,並不需要人們手工去做,學習彙編語言,就必須了解二進位(還有八進位/十六進位)。 數制也稱計數制,是用一組固定的符號和統一的規則來表示數值的方法。人們通常採用的數制有十進位、二進位、八進位和十六進位。                      

數制的基本概念


數碼

數制中表示基本數值大小的不同數字符號。例如,十進位有10個數碼:0、1、2、3、4、5、6、7、8、9。


基數

數制所使用數碼的個數。例如,二進位的基數為2;十進位的基數為10。


位權

數制中某一位上的1所表示數值的大小(所處位置的價值)。例如,十進位的123,1的位權是100,2的位權是10,3的位權是1。二進位中的 1011 ,第一個1的位權是8,0的位權是4,第二個1的位權是2,第三個1的位權是1


數制

計數的規則。在人們使用最多的進位計數制中,表示數的符號在不同的位置上時所代表的數的值是不同的。


十進位

人們日常生活中最熟悉的進位計數制。在十進位中,數用0,1,2,3,4,5,6,7,8,9這十個符號來描述。計數規則是逢十進一。


二進位

在計算機系統中採用的進位計數制。在二進位中,數用0和1兩個符號來描述。計數規則是逢二進一,借一當二。


十六進位

人們在計算機指令代碼和數據的書寫中經常使用的數制。在十六進位中,數用0,1,…,9和A,B,…,F(或a,b,…,f)16個符號來描述。計數規則是逢十六進一。


數制符號

二進位B(binary)

八進位O(octal)

十進位D(decimal)

十六進位H(hexadecimal)

數制的轉換

無論哪種數制,數值的表示都包含兩個基本要素:基數和各位的「位權」(「位權」可理解為對應位置上1所代表的值或者權力的大小)。

基數是一個近位計數制允許選用的基本的數字符號的個數,一般而言,r進位的基數為r,可供選用的計數符號有r個,分別為0~(r-1),每個數位就向其高位進1,即「逢r進1」。如十進位基數為10,可供選用的計數符號有10個,分別為0~9,每個數位計滿10就向其高位進1,即逢10進1。

「位權」又簡稱「權」,是指一個進位計數制中,各位數字符號所表示的數值。位權的大小是以基數為底,數字符號所處位置的序號為指數的整數次冪。各數字符號所處位置的序號記法為:以小數點為基準,整數部分自右向左依次為0,1,2,……遞增,小數部分自左向右以此為-1,-2,-3,……遞減。

十進位整數轉換為二進位採用「除r取餘法」。

例:(15)D=(1111)B=(17)O=(F)H.

數制的轉換方法

下面我們來看看各數制之間是怎麼轉換的:

其它進位轉換為十進位

方法是:將其它進位按權位展開,然後各項相加,就得到相應的十進位數。

例1: N=(10110.101)B=(?)D

按權展開N=1*2^4+0*2^3+1*2^2+1*2^1+0*2^0+1*2^-1+0*2^-2+1*2^-3

=16+4+2+0.5+0.125 =(22.625)D

將十進位轉換成其它進位

方法是: 它是分兩部分進行的即整數部分和小數部分。

整數部分:(基數除法)

把我們要轉換的數除以新的進位的基數,把餘數作為新進位的最低位;

把上一次得的商再除以新的進位基數,把餘數作為新進位的次低位;

繼續上一步,直到最後的商為零,這時的餘數就是新進位的最高位.

小數部分: (基數乘法)

把要轉換數的小數部分乘以新進位的基數,把得到的整數部分作為新進位小數部分的最高位

把上一步得的小數部分再乘以新進位的基數,把整數部分作為新進位小數部分的次高位;

繼續上一步,直到小數部分變成零為止。或者達到預定的要求也可以。

相互轉換

二進位轉換為八進位、十六進位:它們之間滿足23和24的關係,因此把要轉換的二進位從低位到高位每3位或4位一組,高位不足時在有效位前面添「0」,然後把每組二進位數轉換成八進位或十六進位即可

八進位、十六進位轉換為二進位時,把上面的過程逆過來即可。

例3:N=(C1B)H=(?)B

(C1B)H=1100/0001/1011=(110000011011)B

數制及其轉換

數制也稱為計數制,是用一組固定的符號和統一的規則來表示數值的方法。人們通常採用的數制有十進位、二進位、十六進位和八進位。但計算機只認識二進位。用進位的原則進行計數稱為進位計數制,簡稱進位。在一般情況下,人們習慣於用十進位來表示數。其實,在現實生活中也使用其他進位,如用六十進位計時,用十二進位作為月到年的進位等。在計算機科學中,不同情況下允許採用不同數制表示數據。在計算機內用二進位數碼表示各種數據,但是在輸入、顯示或列印輸出時,人們習慣於用十進位計數。在電腦程式編寫中,有時還採用八進位和十六進位,這樣就存在著同一個數可用不同的數制表示及它們相互之間轉換的問題。在介紹各種數制之前,首先介紹數制中的幾個名詞術語。

數碼:一組用來表示某種數制的符號。如:1、2、3、4、A、B、C、Ⅰ、Ⅱ、Ⅲ、Ⅳ等。

基數:數制所使用的數碼個數稱為「基數」或「基」,常用「R」表示,稱R進位。如二進位的數碼是0、1,基為2。

位權:指數碼在不同位置上的權值。在進位計數制中,處於不同數位的數碼代表的數值不同。如十進位數111,個位數上的1權值為100,十位數上的1權值為101,百位數上的1權值為102。

常用的進位計數制

1)十進位(Decimal System)

十進位數是人們最熟悉的一種進位計數制,它由0、1、2、…、8、9這10個數碼組成,即基數為10。十進位的特點為:逢十進一,借一當十。一個十進位數各位的權是以10為底的冪。

2)二進位(Binary System)

01兩個數碼組成,即基數為2。二進位的特點為:逢二進一,借一當二。一個二進位數各位的權是以2為底的冪。

3)八進位(Octal System)

012345678個數碼組成,即基數為8。八進位的特點為:逢八進一,借一當八。一個八進位數各位的權是以8為底的冪

4)十六進位(Hexadecimal System)

012、…、9ABCDEF16個數碼組成,即基數為16。十六進位的特點為:逢十六進一,借一當十六一個十六進位數各位的權是以16為底的冪

在書寫時,一般用以下兩種數制表示方法:

(1)把一串數用括號括起來,再加這種數制的下標。如(10)16,(100100)2,(120)8。對於十進位可以省略。

(2)用進位制的字母符號B(二進位)、O(八進位)、D(十進位)、H(十六進位)來表示。注意:在不至於產生歧義時,可以不註明十進位數的進位。

如:十六進位數A2A0C可表示為A2A0CH。

表1-1  十進位、二進位、八進位、十六進位之間的對應關係

十進位

二進位

八進位

十六進位

十進位

二進位

八進位

十六進位

0

0

0

0

9

1001

11

9

1

1

1

1

10

1010

12

A

2

10

2

2

11

1011

13

B

3

11

3

3

12

1100

14

C

4

100

4

4

13

1101

15

D

5

101

5

5

14

1110

16

E

6

110

6

6

15

1111

17

F

7

111

7

7

16

10000

20

10

8

1000

10

8

17

10001

21

11

2.二進位/八進位/十進位與十六進位之間各自的轉換規律,看懂下方例題,多練習,

1).R進位轉換為十進位

    方法是:將其他數制按權展開,然後各項相加,就得到了相應的十進位數。

    例如:我們熟悉十進位的(1234. 5)10 =1 ×103 +2 ×102+3×101 +4×100 +5×l0-1=1234.5,這裡的數字「2」在百位上,就代表有兩個100,即2×102,以此類推。那麼我們就可以用這樣的方法來算R進位數相對應的十進位。

    (10110. 1)2  =1× 24 +0 × 23 +1 ×22 +1×21 +0 ×20 +1×2-1

               = (22. 5)10

    (456.45)8   =4 × 82 +5 × 81+6 ×80 +4 ×8-1+5 ×8-2

               = (302. 578125)10

    (2AF)16     =2× 162 +A ×161 +F ×160

               =2 × 162 +10×16 +15×1

               = (687)10

2).十進位數轉換為R進位數

    方法是:R進位的整數部分和小數部分分別對待,整數部分採用「除R取餘」的方法,先計算出低位。小數部分採用「乘R取整」的方法,先計算出高位。

    例如:依據下面的計算方法,我們得到(143. 8125)10=(10001111. 1101)2。

    

    十進位轉化為八進位或十六進位,只需將除數或乘數換成8或16就可以了。

3)二進位、八進位、十六進位數轉化為十進位數

對於任何一個二進位數、八進位數、十六進位數,可以寫出它的按權展開式,再按十進位進行計算即可。

例如:

(1111.11)2 = 1×23+1×22+1×21+1×20+1×2-1+1×2-2 = 15.75

(A10B.8)16 = 10×163+1×162+0×161+11×160+8×16-1= 41227.5

4)十進位數轉化為二進位數

十進位數的整數部分和小數部分在轉換時需作不同的計算,分別求值後再組合。對於整數部分採用除2取餘法,即逐次除以2,直至商為0,得出的餘數倒排,即為二進位各位的數碼。小數部分採用乘2取整法,即逐次乘以2,從每次乘積的整數部分得到二進位數各位的數碼。

例:將十進位數100.125轉化為二進位數。

先對整數100進行轉換:

由上得出,100D = 1100100B。可通過按權展開式檢驗:

1×26+1×25+0×24+0×23+1×22+0×21+0×20 = 64+32+4 = 100

對於小數部分0.125的轉換:

                       0.125×2 = 0.250               ……0 → a-1

                       0.25×2 = 0.5                    ……0 → a-2

                       0.5×2 = 1                         ……1 → a-3

由上得出,0.125D = 0.001B。

將整數和小數部分組合,得出:100.125D =1100100.001B。

5)二進位數與八進位數的相互轉換

二進位數轉換成八進位數的方法是:將二進位數從小數點開始,對二進位整數部分向左每3位分成一組,對二進位小數部分向右每3位分成一組,不足3位的分別向高位或低位補0湊成3位。每一組有3位二進位數,分別轉換成八進位數碼中的一個數字,全部連接起來即可。

例:把二進位數11111101.101轉化為八進位數。

二進位3位分組

011

111

101.

101

轉換為八進位數

3

7

5.

5

所以,11111101.101B = 375.5O。

反過來,將八進位數轉換成二進位數,只要將每一位八進位數轉換成相應的3位二進位數,依次連接起來即可。

6)二進位數與十六進位數的相互轉換

二進位數與十六進位數的相互轉換方法和二進位數與八進位數的轉換類似。二進位數轉換成十六進位數,只要把每4位分成一組,再分別轉換成十六進位數碼中的一個數字,不足4位的分別向高位或低位補0湊成4位,全部連接起來即可。反之,十六進位數轉換成二進位數,只要將每一位十六進位數轉換成4位二進位數,依次連接起來即可。

例:將10110001.101B轉換為十六進位數。

二進位4位分組

1011

0001.

1010

轉換為十六進位數

B

1.

A

所以,10110001.101B = B1.AH。

其他數制之間的轉換可以通過二進位數作為中間橋梁,先轉化為二進位數,再轉化為其他進位數。

二進位的運算規則

在計算機中,採用二進位數可以非常方便地實現各種算術運算和邏輯運算。

1)算術運算規則

加法規則:0+0 = 00+1 = 11+0 = 11+1 = 10(向高位有進位)。

減法規則:0-0 = 010-1 = 1(向高位借位);1-0 = 11-1 = 0

乘法規則:0 × 0 = 00 × 1 = 01 × 0 = 01 × 1 = 1

除法規則:0/1 = 01/1 = 1

2)邏輯運算規則

邏輯與運算(AND):00 = 001 = 010 = 011 = 1

邏輯或運算(OR):00 = 001 = 110 = 111 = 1

邏輯非運算(NOT):1 = 00 = 1

邏輯異或運算(XOR):

邏輯異或運算即實現按位加的功能,只有當兩個邏輯值不相同時,結果才為1

計算機中數的表示

1.正數與負數

    計算機只認識二進位數0、1,所以在計算機中數的符號也是用數碼來表示的,一般用「0」表示正數的符號,「1」表示負數的符號,並放在數的最高位。

    例如:(01011)2=(+11)10,(11011)2=(-11)10

    計算機中數的表示有三種--原碼、補碼與反碼。數在計算機中都是以補碼的形式存儲的。

    一個正數的原碼、補碼與反碼是相同的,是其本身;

    負數的反碼是相對應的正數按位取反;

    負數的補碼等於反碼加1。

    例如:(10)10=(1010)2,所以(10)10的原碼、反碼、補碼均為:01010。

        (-10)10 =(- 1010)2,則(-10)10的原碼、反碼、補碼分別為:

    原碼:11010;

    反碼:10101(對01010按位取反);

    補碼:10110( 10101+1)。

2.定點數和浮點數

   (1)定點數表示法

    在機器中,小數點位置固定的數稱為定點數,一般採用定點小數表示法,即小數點固定在符號位與最高位之間。有時也採用定點整數表示法,此時將小數點固定在數的最低位的後面。定點數的運算規則比較簡單,但不適宜對數值範圍變化比較大的數據進行運算。

   (2)浮點數表示法

    浮點數可以擴大數的表示範圍。浮點數由兩部分組成:一部分用以表示數據的有效位,稱為尾數;一部分用於表示該數的小數點位置,稱為階碼。

1.3.2  信息的編碼

1.計算機中數據的單位

計算機中的數據都要佔用不同的二進位位。為了便於表示數據量的多少,引入數據單位的概念。

1)位(bit

位,簡記為b也稱為比特,是計算機存儲數據的(最小單位)。一個二進位位只能表示0或1,要想表示更大的數,就得把更多的位組合起來。每增加一位,所能表示的數就增大一倍。

2)字節(Byte

字節來自英文Byte,簡記為B。規定1B=8bit。字節是存儲信息的基本單位。微型機存儲器是由一個個存儲單元構成的,每個存儲單元的大小就是一個字節,所以存儲器容量大小也以字節數來度量。我們還經常使用其他的度量單位,即KBMBGBTB,其換算關係為:

1KB = 210 B1MB = 220 B1GB = 230 B1TB = 240 B

3)字(Word)

計算機處理數據時,CPU通過數據總線一次存取、加工和傳送的數據稱為字,計算機的運算部件能同時處理的二進位數據的位數稱為字長。一個字通常由一個字節或若干個字節組成。由於字長是計算機一次所能處理的實際位數長度,所以(字長)是衡量計算機性能的一個重要指標。字長越長,速度越快,精度越高。不同微處理器的字長是不同的,常見的微處理器字長有8位、16位、32位和64位等。

2.數值的表示

在計算機中,所有數據都以二進位的形式表示。數的正負號也用「0」和「1」表示。通常規定一個數的最高位作為符號位,「0」表示正,「1」表示負。這種採用二進位表示形式的連同數符一起代碼化了的數據,在計算機中統稱為(機器數)或(機器碼),而與機器數對應的用正、負符號加絕對值來表示的實際數值稱為真值。例如:作為有符號數,機器數01111111的真值是+1111111,也就是127。

為了在計算機的輸入輸出操作中能直觀迅速地與常用的十進位數相對應,產生了用二進位代碼表示十進位數的編碼方法,簡稱BCD碼或8421編碼。例如,對於(239)10的編碼如下:

十進位數

2

3

9

8421編碼

0010

0011

1001

常用的數制

(1)十進位--->二進位

對於整數部分,用被除數反覆除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的餘數。另外,所得到的商的最後一位餘數是所求二進位數的最高位。

對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。

(2)二進位--->十進位

二進位數轉換為十進位數

二進位數第0位的權值是2的0次方,第1位的權值是2的1次方……

(3)十進位--->八進位

10進位數轉換成8進位的方法,和轉換為2進位的方法類似,唯一變化:除數由2變成8。

(4)八進位--->十進位

八進位就是逢8進1。

八進位數採用 0~7這八數來表達一個數。

八進位數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……

(5)十進位--->十六進位

10進位數轉換成16進位的方法,和轉換為2進位的方法類似,唯一變化:除數由2變成16。

(6)十六進位--->十進位

16進位就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這六個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。

十六進位數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……

所以,在第N(N從0開始)位上,如果是是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。

(7)二進位--->八進位

整數部分:從後往前每三位一組,缺位處用0填補,然後按十進位方法進行轉化。

(8)八進位--->二進位

整數部分:從後往前每一位按十進位轉化方式轉化為三位二進位數,缺位處用0補充。

(9)二進位--->十六進位

二進位和十六進位的互相轉換比較重要。不過這二者的轉換卻不用計算,每個C,C++程式設計師都能做到看見二進位數,直接就能轉換為十六進位數,反之亦然。


1.十進位:生活中最常用的數制,逢十進一,用D表示。2.二進位:計算機技術中廣泛採用的一種數制,二進位數據是用0和1兩個數碼來表示的數,用B表示。3.八進位:採用0-7共八個數碼,逢八進一,用O表示。4.十六進位:數用0-9和A-F共16個符號來表述。   逢十六進一。0-9對應0-9,A-F對應10-15,用H表示。方法為:十進位數除2取餘法,即十進位數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。(具體用法如下圖)十進位轉換成二進位是除2取餘,轉換成八進位是除8取餘,轉換成十六進位是除16取餘
舉個例子說明:100轉化八進位就是144
先用100除以8 得12餘4
再用12除以8  得1餘4
再用1除以8   得0餘1
最後把把所有餘數倒過來放一起就是144 就是八進位數了(十六進位同理)方法為:把二(八、十六)進位數按權展開、相加即得十進位數。位權:對於 N進位數,整數部分第i位的位權為N^(i-1),方法為:3位二進位數按權展開相加得到1位八進位數。(注意事項,3位二進位轉成八進位是從右到左開始轉換,不足時補0)。口訣「4 2 1」,3個數字的第一位代表著4,第二位代表著2,第三位代表1(從左往右)如:010=2  110=6   111=7   001=1方法為:與二進位轉八進位方法近似,八進位是取三合一,十六進位是取四合一。(注意事項,4位二進位轉成十六進位是從右到左開始轉換,不足時補0)。口訣:「8 4 2 1」,4個數字的第一位代表著8,第二位代表著4,第三位代表2,第四位代表著1(從左往右)例如:0001=1 0010=2  0101=5  1010=A  1111=F


《信息與二進位數》


信息與二進位數

(相關知識點)

l 信息:用來描述事物變化及相互關係的數據說表達的內容是信息(內容是信息;數據本身是載體,這裡的數據是廣義上的。如:報紙是信息的載體,而報紙上的新聞內容則是信息)。資訊理論的創始人香農認為「信息是能夠用來消除不確定性的東西」。(理解)

l 人類社會賴以生存和發展的三大資源:信息、物質、能源。(記憶)

l 常用的信息技術:通信技術、計算技術、感測技術、控制技術信息載體:在信息傳播中攜帶信息的媒介,是信息賴以附載的物質基礎。(了解)

l 信息的主要特徵:傳載性、共享性、可處理性、時效性等。(理解)

l 信息處理的工具:算盤、電報、電話、計算機等。計算機是常見的信息處理工具。(了解)

l 信息處理的一般過程是指信息收集、信息存儲、信息加工、信息發布。(理解)

l 信息處理的一般要求:信息的獲取要全面、信息的加工要準確、信息的表達要規範、信息的傳輸要安全。(了解)

l 計算機作為常見的信息處理工具的特徵:高速、自動、準確。(了解)

l B與b:一個字節(Byte,簡寫為B)由8個二進位位(bit,簡寫為b)構成。

(1)1B=8bit 

(2)計算機存儲器容量的基本單位是字節(Byte)。(記憶)

l 數碼:一組用來表示某種數制的符號。

(1)二進位的數碼是:0,1

(2)十進位的數碼是:0,1,2,3,4,5,6,7,8,9

(3)十六進位的數碼是:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F

l 基數:數制所使用的數碼個數。(以十進位為參照,類比)

(1)二進位的基數是:2

(2)十進位的基數是:10

(3)十六進位的基數是:16

l 位權:數碼在不同位置上的倍率值。(以十進位為參照,類比)

(1)二進位數的位權從左向右依次是:  ……23,22,21,20

(2)十進位數的位權從左向右依次是:  ……103,102,101,100

(3)十六進位數的位權從左向右依次是:……163,162,161,160

l 進位法則:二進位的進位原則是「逢二進一」。(以十進位為參照,類比)

l 數制轉換:

(1)二進位轉十進位(理解掌握)

方法一:「按權相加」

對十進位數而言:123.456=6*10-3+5*10-2+4*10-1+3*100+2*101+1*102

                         =0.006+0.05+0.4+3+20+100

類似的,在將二進位數轉換成十進位數時,將每一位上的數字字符乘以它所代表的權再相加,就可以得到相應的十進位數。

對於二進位數:100110.01=1*2-2+0*2-1+0*20+ 1*21+ 1*22 + 0*23 + 0*24 + 1*25

=0.25+2+4+32

=38.25

方法二:表格法

假設去超市購物,你手上只有面值0.5、2、5、10、20元的鈔票各一張,你最多可以購買多少錢的商品?

鈔票面值

20

10

5

2

1

0.5

鈔票總額


1

1

1

1

0

1

20+10+5+2+0.5=37.5

類似的,將二進位數轉換成十進位數時,各個數位上的數碼相當於面值分別為1、2、4、8、16…2n不等的鈔票:


25

24

23

22

21

20

2-1

結果

100101.1B


1

0

0

1

0

1

1

32+4+1+0.5=37.5

 ∴100101.1B=37.5

(2)十進位轉二進位(理解掌握)

方法一:「除2倒取餘」

將十進位數轉換成二進位數,對於整數部分可以使用「除二取餘、逆序排列」:將給定的十進位數除以2,餘數作為二進位數的末位值,所得的商再除以2,餘數依次作為二進位數的值……如此反覆,直到商為0,最後將所得餘數依次從後往前排,最後的餘數作為最高位即得到所求二進位數;對於小數部分可以使用「乘二取整、順序排列」:將給定的十進位數乘以2,將乘積的整數部分取出,再用餘下的小數部分乘以2,再取出乘積的整數部分……如此反覆,直到積的小數部分為0,或者達到所要求的精度為止。

例:將十進位數45.375轉換成二進位數。

整數部分:

小數部分:

0.375 * 2=0.75   取整數部分 0

0.75*2=1.5       取整數部分 1

0.5*2=1          取整數部分 1      (積的小數部分為0,結束)

0.375=0.011B

∴ 45.375=101101.011B

方法二:表格法

將十進位數分解成最接近、但不大於自己的2n數之和,其中,每個2n數最多出現一次,然後在表格中將出現的數下行填入「1」,否則填入「0」。

45.375=32+8+4+1+0.25+0.125


25

24

23

22

21

20

2-1

2-2

2-3

結果

45


1

0

1

1

0

1

0

1

1

45=101101.011B

∴ 45.375=101101.011B

由於2-n比較難於計算,且可能出現循環,因此,在帶有小數的二進位數與十進位之間的轉換時,一般不使用表格法

(3)二進位轉十六進位的相互轉換(了解)

請觀察n位二進位可以表示的數的個數,總結規律:

結論:n位二進位可以表示2n個不同的數。因為4位二進位一共可以表示16個數,分別對應的數值的大小是十進位的0-15,而十六進位的數碼也剛好是0-15這16個,所以只需要把二進位數從低位到高位每4位一組劃分,然後把這4位二進位數轉為相應的數值大小,再用16進位數碼對應表示即可轉為十六進位數。

 (3.1)二進位數轉為十六進位數

例:11011100010B=110 1110 0010  B

                = 6    E   2    H

(3.2)十六進位數轉為二進位數

將16進位數的每位數碼對應的數值大小轉為相應的4位二進位即可.

例:A7F4H=  A   7    F   4    H

         =1010 0111 1111 0100  B

附1:二進位典型例題1


附2:二進位數典型例題2



關注【機電技術與設計製造交流分享會】,獲取最新最全的知識和信息!

         版權聲明:本機電技術與設計製造交流分享會旨在「學習知識,分享知識」,本意不作為任何商業用途與利益價值;由於部分文章可能存在來源於網絡或其他作者出處,對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,另外有些文章版權及插圖屬於原作者,由於推送時未能及時與原作者取得聯繫。若涉及到版權或侵權問題,敬請原作者及時聯繫我們,我們會及時審核處理,及時刪除!


相關焦點

  • 二進位、八進位、十進位、十六進位數的轉換方法
    在計算機中:D7 D6 D5 D4 D3 D2 D1 D0 只有兩種0和18 4 2 1二 、數制轉換 不同進位計數制之間的轉換原則:不同進位計數制之間的轉換是根據兩個有理數如相等,則兩數的整數和分數部分一定分別相等的原則進行的。也就是說,若轉換前兩數相等,轉換後仍必須相等。
  • 二進位、八進位和十六進位數之間的轉換
    (1)二進位數轉換為十六進位轉換方法與二進位數轉換為八進位類似,只不過是四位合一位。如:將10111101010.010001B轉換為十六進位。以小數點為基準,對於整數部分,從右向左,四位一組,不足四位前面補0。
  • 10、進位轉換:二進位、八進位、十六進位、十進位之間的轉換
    將二進位、八進位、十六進位轉換為十進位二進位、八進位和十六進位向十進位轉換都非常容易,就是「按權相加」。所謂「權」,也即「位權」。假設當前數字是 N 進位,那麼:更加通俗的理解是,假設一個多位數(由多個數字組成的數)某位上的數字是 1,那麼它所表示的數值大小就是該位的位權。
  • 二進位,八進位,十進位,十六進位之間的轉換
    二進位轉換首先來看十進位到二進位:除2取餘數 最後把餘數倒過來 100101比如:十進位數37所以轉換成的二進位數字為:100101再來八進位到二進位:一個八進位的位拆分成一個三位的二進位數>十進位到八進位:除8取餘數 最後把餘數倒過來同時我們也可以先將十進位轉換成二進位,然後將二進位又轉換成八進位比如:2456 轉化成八進位數字:46302456/8=307,餘0;307/8=38,餘3;38/8=4
  • 計算機的語言——二進位,十進位、八進位、十六進位與二進位之間的轉換
    一、進位的概念計算機中使用二進位編碼(只有0和1)表示數據,且只存在二進位。按權展開求和,用權10x表示數碼的位置,等號=左右表達式相等。註:十六進位數前兩個數字必須為 0X(十六進位標誌)例如:0X213     -0X30       +0X56      -0X12A二、進位轉換
  • 二進位,八進位,十進位,十六進位轉換詳解~
    規則逢二進一逢八進一逢十進一逢十六進一權2^i-18^i-110^i-116^i-12.進位轉換十進位01234567          小數:0.11= 1×2^-1 + 1×2^-2 (以小數點為界逐步向右排序)        2.八進位···>十進位        轉換原則:讓八進位各位上的係數乘以對應的權,然後求其和。
  • 二進位、八進位、十進位與十六進位
    一、 進位的概念在計算機語言中常用的進位有二進位、八進位、十進位和十六進位,十進位是最主要的表達形式。對於進位,有兩個基本的概念:基數和運算規則。基數:基數是指一種進位中組成的基本數字,也就是不能再進行拆分的數字。二進位是0和1; 八進位是0-7;十進位是0-9;十六進位是0-9,A-F(大小寫均可)。也可以這樣簡單記憶,假設是n進位的話,基數就是【0,n-1】的數字,基數的個數和進位值相同,二進位有兩個基數,十進位有十個基數,依次類推。
  • 6、計算機進位之二進位、十進位、十六進位之間的轉換
    4、進位之間的轉換4.1、正整數的十進位轉換二進位將一個十進位數除以二,得到的商再除以二,依此類推直到商等於一或零時為止,倒取除得的餘數,即換算為二進位數的結果4.2、二進位轉換為十進位二進位轉十進位的轉換原理:從二進位的右邊第一個數開始,每一個乘以2的n次方,n從0開始,每次遞增1。然後得出來的每個數相加即是十進位數。
  • 計算機基礎進位轉換(二進位、八進位、十進位、十六進位)
    圖3.十進位轉八進位1.3 十進位轉十六進位思路和十進位轉二進位一樣,參考如下例題:例題: 25.68D = ______ H(精確到小數點後3位)**解析:**如下圖所示,整數部分除以16取餘數圖4.十進位轉十六進位# 2.R進位轉十進位 ## 2.1 二進位轉十進位 **方法為:**把二進位數按權展開、相加即得十進位數。
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    一、 十進位與二進位之間的轉換(1) 十進位轉換為二進位,分為整數部分和小數部分 ① 整數部分 方法:除2取餘法,即每次將整數部分除以2,餘數為該位權上的數,而商繼續除以2,餘數又為上一個位權上的數,這個步驟一直持續下去
  • 二進位-八進位-十進位-十六進位之間的相互轉換
    ,最近用到數字晶片74HC125,涉及到TTL-CMOLS-進位轉換,三個方面的知識,重新拿起書本,再查找資料,匯總信息如下:01:二進位-轉為-八進位//方法://每3位為一組,因為8進位數,需要3bit數據表示0~7,逢八進一;案例1:(1100 1110)2=(11 001 110)2=(316)8
  • 二進位、八進位、十進位、十六進位轉換計算方法
    進位也就是進位位,我們常用的進位包括:二進位、八進位、十進位與十六進位,它們之間區別在於數運算時是逢幾進一位。比如二進位是逢2進一位,十進位也就是我們常用的0-9是逢10進一位。
  • 二進位與十六進位之間互相轉換
    通過上節課的學習,我們掌握了二進位與八進位互相轉換的方法(我們介紹的是421法),我們進行知識遷移,二進位數轉換成十六進位數的方法我們用
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位
  • 二進位、八進位和十六進位之間轉換
    我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位(Binary)。例如,數字 0、1、10、111、100、1000001 都是有效的二進位。在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。
  • 二進位、八進位、十進位、十六進位之間的轉換
    反過來,當我們看到 FD時,如何迅速將它轉換為二進位數呢?先轉換F:        看到F,我們需知道它是15(可能你還不熟悉A~F這六個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。接著轉換 D:        看到D,知道它是13,13如何用8421湊呢?
  • 十進位轉二、八、十六進位
    微信:15338817400有時候服務端需要二進位的字符串或者十六進位(加密token一般不會用十進位)所以十進位和十六進位、二進位互相轉化顯得十分重要1、十進位轉二進位二進位如何轉十進位,十進位如何轉二進位2、  負整數轉換成二進位方法:先是將對應的正整數轉換成二進位後,對二進位取反,然後對結果再加一。還以42為例,負整數就是-42,如圖4所示為方法解釋。
  • 二進位、八進位和十六進位之間轉換詳解
    我們不妨將思維拓展一下,既然可以用 0~9 共十個數字來表示數值,那麼也可以用0、1兩個數字來表示數值,這就是二進位(Binary)。例如,數字 0、1、10、111、100、1000001 都是有效的二進位。在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。
  • 數據的表示二進位八進位十進位十六進位之間的轉換
    數據的表示1.R進位轉十進位R進位轉十進位使用按權展開法二進位 10100.01 = 1x24+1x22+1x2-2七進位 604.01 = 6x72+4x70+1x7-2十進位 1227 = 1x103+2x102+2x101+7x1002.十進位轉
  • 個人總結——二進位、十進位、十六進位轉換的方法
    近期和同事溝通時發現很多小夥伴多進位的轉換不太清晰,所以趁著周末自己總結了一下和大家分享想,下面先了解下定義。