第一章:數制和碼制


數制

一、 十進制

進位規則是“逢十進一”。任意一個n位整數、m位小數的十進制可表示為:


其中

ki-稱為數制的系數,表示第i位的系數,十進制ki的取值為0 ~ 9十個數, i 取值從 (n-1)~0的所有正整數到-1~-m的所有負整數

10i-表示第i位的權值,10為基數,即采用數碼的個數

n、m-為正整數, n為整數部分的位數, m為小數部分的位數

例如

(249.56)10=2×102+ 4×101+ 9×100+ 5×10–1+ 2×10-2

二、 二進制

進位規則是“逢二進一”,任意一個n位整數、m位小數的二進制可表示為

其中

ki-取值只有兩個數碼:0和1

2i-為二進制的權,基數為2      

n、m-為正整數

如(11011.101)2=1×24 +1×23 +0×22 +1×21 +1×20 +1×2-1+0×2-2 +1×2-3=(27.625)10

三、八進制

 

進位規則是“逢八進一”,其基數為8。任意一個n位整數、m位小數的八進制可表示為

其中

ki-取值有8個數碼:0~7

8i-為八進制的權,基數為8                           

n、m-為正整數

如(13.74)8=1×81+3×80 +7×8-1+4×8-2 =(11.9375)10

四、十六進制

 

進位規則是“逢十六進一”,其基數為16。任意一個n位整數、m位小數的十六進制可表示為

其中

ki-取值有16個數碼:0~9、A(10)、 B(11)、C(12)、D(13)、E(14)、 F(15)

16 i-為十六進制的權,基數為16                          

n、m-為正整數

(F9.1A)16=15×161+9×160 +1×16-1+10×16-2 = (249.1015625)10

 

一個數碼的進制表示,可用下標,如(N)2表示二進制; (N)10表示十進制; (N)8表示八進制, (N)16表示十六進制

有時也用字母做下標,如(N)B表示二進制,B-Binary;(N)D表示十進制,D-Decimal;(N)O表示八進制,O-Octal;(N)H 表示十六進制,H-Hexadecimal;

下表為0~15個數碼的不同進制表示

D

B

O

H

D

B

O

H

0

0000

00

0

8

1000

10

8

1

0001

01

1

9

1001

11

9

2

0010

02

2

10

1010

12

A

3

0011

03

3

11

1011

13

B

4

0100

04

4

12

1100

14

C

5

0101

05

5

13

1101

15

D

6

0110

06

6

14

1110

16

E

7

0111

07

7

15

1111

17

F

不同數制間的轉換

 

數制轉換:不同進制的數碼之間的轉換叫做數制轉換

一、 二進制數、八進制數和十六進制數轉換成十進制數

        即將二進制數、八進制數和十六進制數轉換成十進制數,方法是將二進制數、八進制數和十六進制數按下列公式進行展開即可

例如:

二、十進制數轉換成二進制數:

即將十進制數轉換成二進制數,原則是“整數除2,小數乘2

a. 十進制的整數轉換:

將十進制的整數部分用基數2去除,保留余數,再用商除2,依次下去,直到商為0為止,其余數即為對應的二進制數的整數部分

b. 十進制的小數轉換

將小數用基數2去乘,保留積的整數,再用積的小數繼續乘2,依次下去,直到乘積是0為或達到要求的精度,其積的整數部分即為對應的二進制數的小數部分

例  將(173.39)D轉化成二進制數,要求精度為1%

解:其過程如下

a. 整數部分 

即(173)D=(10101101) B

b. 小數部分

由於精度要求為1%,故應該令2-m≤1% 取對數可得2-m≤10-2 ;2m≥100;mlg102≥lg10100;m≥6.6

取m=7 滿足精度要求,過程如下

即(0.39)D=(0.0110001) B

故(173.39)D=(10101101.0110001)B

依此類推,對於十進制轉換成其它進制,只要把基數2換成其它進制的基數即可。

 

三、 二進制轉換成八進制和十六進制

方法:由於3位二進制數可以有8個狀態,000~111,正好是8進制,而4位二進制數可以有16個狀態,0000~1111,正好是16進制,故可以把二進制數進行分組。八進制三位分為一組,不夠補零,十六進制四位分為一組。

注:若將八進制或十六進制轉換成二進制,即按三位或四位轉成二進制數展開即可。

提醒:若要將十進制轉換成八進制或16進制,可先轉換成二進制,再分組,轉換成八進制或十六進制。

 二進制的算術運算

 

二進制算術運算的特點

當兩個二進制數碼表示兩個數量的大小,並且這兩個數進行數值運算,這種運算稱為算術運算。其規則是“逢二進一”、“借一當二”。算術運算包括“加減乘除”,但減、乘、除最終都可以化為帶符號的加法運算。

如兩個數1001和0101的算術運算如下

            

 

反碼、補碼和補碼運算

 

一、原碼:

 

在用二進制數碼表示一個數值時,其正負是怎么區別的呢?二進制數的正負數值的表述是在二進制數碼前加一位符號位,用“0”表示正數,用“1”表示負數,這種帶符號位的二進制數碼稱為原碼。

 

 

 

例如:+17的原碼為010001,-17的原碼為110001

二、反碼

 

反碼是為了在求補碼時不做減法運算。二進制的反碼求法是:正數的反碼與原碼相同,負數的原碼除了符號位外的數值部分按位取反,即“1”改為“0”,“0”改為“0”。

例如+7和-7的原碼和補碼為:

+7的原碼為0  111,反碼為0  111

-7的原碼為1  111,反碼為1  000

注:0的反碼有兩種表示,+0的反碼為0 000,-0的反碼為1 111

三、補碼:

當做二進制減法時,可利用補碼將減法運算轉換成加法運算。在將補碼之前先介紹模(或模數)的概念

1.模(模數)的概念:

把一個事物的循環周期的長度,叫做這個事件的模或模數。

如一年365天,其模數為365;鍾表是以12為一循環計數的,故模數為12。十進制計數就是10個數碼0~9,的循環,故模為10。

以表為例來介紹補碼運算的原理:對於圖所示的鍾表

當在5點時發現表停在10點,若想撥回有兩種方法:

a.逆時針撥5個格,即10-5=5,這是做減法。

b.順時針撥七個格,即10+7=17,由於模是12,故1相當於進位12,1溢出,故為7格,也是17-12=5,這是做加法。

由此可見10+7和10-5的效果是一樣的,而5+7=12,將故7稱為-5的補數,即補碼,也可以說減法可以由補碼的加法來代替。

2.補碼的表示

正數的補碼和原碼相同,負數的補碼是符號位為“1”,數值位按位取反加“1”,即“反碼加1”。

例如:    原碼     反碼   補碼

  +7  0 111  0 111  0 111

  -7  1 111  1 000  1 001

注意:

1.采用補碼后,可以方便地將減法運算轉換成加法運算,而乘法和除法通過移位和相加也可實現,這樣可以使運算電路結構得到簡化;

2.正數的補碼既是它所表示的數的真值,負數的補碼部分不是它所示的數的真值。

3.與原碼和反碼不同,“0”的補碼只有一個,即(00000000)B

4.已知原碼,求補碼和反碼:正數的原碼和補碼、反碼相同;負數的反碼是符號位不變,數值位取反,而補碼是符號位不變,數值位取反加“1”。

如:原碼為10110100,其反碼為11001011,補碼為1100100。

5.已知補碼,求原碼:正數的補碼和原碼相同;負數的補碼應該是數值位減“1”再取反,但對於二進制數來說,先減“1”取反和先取反再加“1”的結果是一樣的。故由負數的補碼求原碼就是數值位取反加“1”。

如已知某數的補碼為(11101110)B,其原碼為(10010010)B

6.如果二進制的位數為n,則可表示的有符號位數的范圍為(-2n~ 2n-1-1),如n=8,則可表示(-128~127),故在做加法時,注意兩個數的絕對值不要超出它所表示數的范圍。

4位帶符號位二進制代碼的原碼、反碼和補碼對照表

十進制數

原碼

反碼

補碼

十進制數

原碼

反碼

補碼

+7

0111

0111

0111

-1

1001

1110

1111

+6

0110

0110

0110

-2

1010

1101

1110

+5

0101

0101

0101

-3

1011

1100

1101

+4

0100

0100

0100

-4

1100

1011

1100

+3

0011

0011

0011

-5

1101

1010

1011

+2

0010

0010

0010

-6

1110

1001

1010

+1

0001

0001

0001

-7

1111

1000

1001

0

0000

0000

0000

-8

1000

1111

1000

 

二進制編碼

 

三個術語

 

數碼:代表一個確切的數字,如二進制數,八進制數等。

代碼:特定的二進制數碼組,是不同信號的代號,不一定有數的意義。

編碼:n 位二進制數可以組合成2n 個不同的信息,給每個信息規定一個具體碼組,這種過程叫編碼。 數字系統中常用的編碼有兩類,一類是二進制編碼,另一類是  二-十進制編碼。另外無論二進制編碼還是二-十進制編碼,都可分成有權碼(每位數碼代表的權值固定)和無權碼。

十進制編碼

 

用4位二進制代碼表示十進制的0~9個數碼,即二-十進制的編碼。 4位二進制代碼可以有0000~1111十六個狀態,則表示0~9十個狀態可以有多種編碼形式,其中常用的有8421碼、余3碼、2421碼、5211碼、余3循環碼等,其中8421碼、2421碼、5211碼為有權碼,即每一位的1都代表固定的值。

幾種編碼形式

 

 

 

說明:

1. 8421碼:又稱BCD碼,是最常用的十進制編碼。其每位的權為8、4、2、1,如(0101)2=1×4+1×1=5

2. 余3碼不是有權碼,由於它按二進制展開后十進制數比所表示的對應的十進制數大3。如0101表示的是2,其展開十進制數為5,故稱為余3碼。采用余3碼的好處是:利用余3碼做加法時,如果所得之和為10,恰好對應二進制16,可以自動產生進位信號。如0110(3)+1010(7)=1111(10);另外0和9、1和8、2和7…是互為反碼,這對於求補很方便。

3. 2421碼是有權碼,其每位的權為2、4、2、1,如(1100)2=1×2+1×4=6,與余3碼相同0和9、1和8、2和7…是互為反碼。另外當任何兩個這樣的編碼值相加等於9時,結果的4個二進制碼一定都是1111。

4. 5211碼也是有權碼,其每位的權為5、2、1、1,如(0111)2=1×2+1×1+1×1=4,主要用在分頻器上。

5. 余3循環碼是無權碼,它的特點是相鄰的兩個代碼之間只有一位狀態不同。這在譯碼時不會出錯(競爭-冒險)

二進制編碼:

它包括自然碼和循環碼(格雷碼)

自然碼:有權碼,每位代碼都有固定權值,結構形式與二進制數完全相同,最大計數為2n-1,n為二進制數的位數。

循環碼:也叫格雷碼,它是無權碼,每位代碼無固定權值,其組成是格雷碼的最低位是0110循環;第二位是00111100循環;第三位是0000111111110000循環,以此類推可以得到多位數的格雷碼。格雷碼的特點是任何相鄰的兩個碼組中,僅有一位代碼不同,抗干擾能力強,主要用在計數器中。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM