新浪微博
關(guān)注微博
人類用文字、圖表、數(shù)字表達和記錄著世界上各種各樣的信息,便于人們用來處理和交流。現(xiàn)在可以把這些信息都輸入到計算機中,由計算機來保存和處理。前面提到,當代馮·諾依曼型計算機都使用二進制來表示數(shù)據(jù),本節(jié)所要討論的就是用二進制來表示這些 數(shù)據(jù)。
經(jīng)過收集、整理和組織起來的數(shù)據(jù),能成為有用的信息。數(shù)據(jù)是指能夠輸入計算機并被計算機處理的數(shù)字、字母和符號的集合。平常所看到的景象和聽到的事實,都可以用數(shù)據(jù)來描述?梢哉f,只要計算機能夠接受的信息都可叫數(shù)據(jù)。
計算機數(shù)據(jù)的表示經(jīng)常用到以下幾個概念。在計算機內(nèi)部,數(shù)據(jù)都是以二進制的形式存儲和運算的。
(1)位
二進制數(shù)據(jù)中的一個位(bit)簡寫為b,音譯為比特,是計算機存儲數(shù)據(jù)的zui小單位。一個二進制位只能表示0或1兩種狀態(tài),要表示更多的信息,就要把多個位組合成一個整體,一般以8位二進制組成一個基本單位。
(2)字節(jié)
字節(jié)是計算機數(shù)據(jù)處理的zui基本單位,并主要以字節(jié)為單位解釋信息。字節(jié)(Byte)簡記為B,規(guī)定一個字節(jié)為8位,即1B=8bit。每個字節(jié)由8個二進制位組成。一般情況下,一個ASCII碼占用一個字節(jié),一個漢字國際碼占用兩個字節(jié)。
(3)字
一個字通常由一個或若干個字節(jié)組成。字(Word)是計算機進行數(shù)據(jù)處理時,一次存取、加工和傳送的數(shù)據(jù)長度。由于字長是計算機一次所能處理信息的實際位數(shù),所以,它決定了計算機數(shù)據(jù)處理的速度,是衡量計算機性能的一個重要指標,字長越長,性能越好。
(4)數(shù)據(jù)的換算關(guān)系
1Byte=8bit,1KB=1024B,1MB=1024KB,1GB=1024MB。
計算機型號不同,其字長是不同的,常用的字長有8、16、32和64位。一般情況下,IBM PC/XT的字長為8位,80286微機字長為16位,80386/80486微機字長為32位,Pentium系列微機字長為64位。
例如,一臺微機,內(nèi)存為256MB,軟盤容量為1.44MB,硬盤容量為80GB,則它實際的存儲字節(jié)數(shù)分別為:
內(nèi)存容量=256×1024×1024B=268435456B
軟盤容量=1.44×1024×1024B=1509949.44B
硬盤容量=80×1024×1024×1024B=85899345920B
如何表示正負和大小,在計算機中采用什么計數(shù)制,是學習計算機的一個重要問題。數(shù)據(jù)是計算機處理的對象,在計算機內(nèi)部,各種信息都必須通過數(shù)字化編碼后才能進行存儲和處理。
由于技術(shù)原因,計算機內(nèi)部一律采用二進制,而人們在編程中經(jīng)常使用十進制,有時為了方便還采用八進制和十六進制。理解不同計數(shù)制及其相互轉(zhuǎn)換是非常重要的。
在計算機中,二進制并不符合人們的習慣,但是計算機內(nèi)部卻采用二進制表示信息,其主要原因有如下4點:
(1)電路簡單
在計算機中,若采用十進制,則要求處理10種電路狀態(tài),相對于兩種狀態(tài)的電路來說,是很復(fù)雜的。而用二進制表示,則邏輯電路的通、斷只有兩個狀態(tài)。例如:開關(guān)的接通與斷開,電平的高與低等。這兩種狀態(tài)正好用二進制的0和1來表示。
(2)工作可靠
在計算機中,用兩個狀態(tài)代表兩個數(shù)據(jù),數(shù)字傳輸和處理方便、簡單、不容易出錯,因而電路更加可靠。
(3)簡化運算
在計算機中,二進制運算法則很簡單。例如:相加減的速度快,求積規(guī)則有3個,求和規(guī)則也只有3個。
(4)邏輯性強
二進制只有兩個數(shù)碼,正好代表邏輯代數(shù)中的“真”與“假”,而計算機工作原理是建立在邏輯運算基礎(chǔ)上的,邏輯代數(shù)是邏輯運算的理論依據(jù)。用二進制計算具有很強的邏 輯性。
用若干數(shù)位(由數(shù)碼表示)的組合去表示一個數(shù),各個數(shù)位之間是什么關(guān)系,即逢“幾”進位,這就是進位計數(shù)制的問題。也就是數(shù)制問題。數(shù)制,即進位計數(shù)制,是人們利用數(shù)字符號按進位原則進行數(shù)據(jù)大小計算的方法。通常是以十進制來進行計算的。另外,還有二進制、八進制和十六進制等。
在計算機的數(shù)制中,要掌握3個概念,即數(shù)碼、基數(shù)和位權(quán)。下面簡單地介紹這3個概念。
數(shù)碼:一個數(shù)制中表示基本數(shù)值大小的不同數(shù)字符號。例如,八進制有8個數(shù)碼:0、1、2、3、4、5、6、7。
基數(shù):一個數(shù)值所使用數(shù)碼的個數(shù)。例如,八進制的基數(shù)為8,二進制的基數(shù)為2。
位權(quán):一個數(shù)值中某一位上的1所表示數(shù)值的大小。例如,八進制的123,1的位權(quán)是64,2的位權(quán)是8,3的位權(quán)是1。
十進制的特點如下:
(1)有10個數(shù)碼:0、1、2、3、4、5、6、7、8、9。
(2)基數(shù):10。
(3)逢十進一(加法運算),借一當十(減法運算)。
(4)按權(quán)展開式。對于任意一個n位整數(shù)和m位小數(shù)的十進制數(shù)D,均可按權(quán)展 開為:
D=Dn-1·10n-1+Dn-2·10n-2+…+D1·101+D 0·10 0+D -1·10 –1+…+D –m·10 –m
例:將十進制數(shù)456.24寫成按權(quán)展開式形式為:
456.24=4×10 2+5×101+6×100+2×10-1+4×10-2
二進制有如下特點:
(1)有兩個數(shù)碼:0、1。
(2)基數(shù):2。
(3)逢二進一(加法運算),借一當二(減法運算)。
(4)按權(quán)展開式。對于任意一個n位整數(shù)和m位小數(shù)的二進制數(shù)D,均可按權(quán)展 開為:
D=Bn-1·2n-1+Bn-2·2n-2+…+B1·21+B0·20+B-1·2–1+…+B–m·2-m
例:把(11001.101)2寫成展開式,它表示的十進制數(shù)為:
1×2 4+1×2 3+0×22+0×21+1×20+1×2-1+0×2-2+1×2-3=(25.625)10
八進制的特點如下:
(1)有8個數(shù)碼:0、1、2、3、4、5、6、7。
(2)基數(shù):8。
(3)逢八進一(加法運算),借一當八(減法運算)。
(4)按權(quán)展開式。對于任意一個n位整數(shù)和m位小數(shù)的八進制數(shù)D,均可按權(quán)展 開為:
D=On-1·8n-1+…+O1·81+O0·80+O-1·8 –1+…+O–m·8-m
例:(5346)8相當于十進制數(shù)為:
5×83+3×82+4×81+6×80=(2790)10
十六進制有如下特點:
(1)有16個數(shù)碼:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。
(2)基數(shù):16。
(3)逢十六進一(加法運算),借一當十六(減法運算)。
(4)按權(quán)展開式。對于任意一n位整數(shù)和m位小數(shù)的十六進制數(shù)D,均可按權(quán)展 開為:
D=Hn-1·16n-1+…+H1·161+H 0·16 0+H -1·16 –1+…+H –m·16 -m
在16個數(shù)碼中,A、B、C、D、E和F這6個數(shù)碼分別代表十進制的10、11、12、13、14和15,這是國際上通用的表示法。
例:十六進制數(shù)(4C4D)16代表的十進制數(shù)為:
4×163+C×16 2+4×161+D×160=(19533)10
二進制數(shù)與其他數(shù)之間的對應(yīng)關(guān)系如表1-1所示。
表1-1 幾種常用進制之間的對照關(guān)系
十 進 制 |
二 進 制 |
八 進 制 |
十 六 進 制 |
0 |
0000 |
0 |
0 |
1 |
0001 |
1 |
1 |
2 |
0010 |
2 |
2 |
3 |
0011 |
3 |
3 |
4 |
0100 |
4 |
4 |
5 |
0101 |
5 |
5 |
6 |
0110 |
6 |
6 |
7 |
0111 |
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 |
不同數(shù)進制之間進行轉(zhuǎn)換應(yīng)遵循轉(zhuǎn)換原則。轉(zhuǎn)換原則是:兩個有理數(shù)如果相等,則有理數(shù)的整數(shù)部分和分數(shù)部分一定分別相等。也就是說,若轉(zhuǎn)換前兩數(shù)相等,轉(zhuǎn)換后仍必須相等,數(shù)制的轉(zhuǎn)換要遵循一定的規(guī)律。
(1)二進制數(shù)轉(zhuǎn)換成十進制數(shù)
將二進制數(shù)轉(zhuǎn)換成十進制數(shù),只要將二進制數(shù)用計數(shù)制通用形式表示出來,計算出結(jié)果,便得到相應(yīng)的十進制數(shù)。
例:(1101100.111)2=1×26+1×25+1×23+1×22+1×2-1+1×2-2+1×2-3
=64+32+8+4+0.5+0.25+0.125
=(108.875)10
(2)八進制數(shù)轉(zhuǎn)換為十進制數(shù)
八進制數(shù)→十進制數(shù):以8為基數(shù)按權(quán)展開并相加。
例:把(652.34)8轉(zhuǎn)換成十進制。
解:(652.34)8=6×82+5×81+2×80+3×8-1+4×8-2
=384+40+2+0.375+0.0625
=(426.4375)10
(3)十六進制數(shù)轉(zhuǎn)換為十進制數(shù)
十六進制數(shù)→十進制數(shù):以16為基數(shù)按權(quán)展開并相加。
例:將(19BC.8)16轉(zhuǎn)換成十進制數(shù)。
解:(19BC.8)16=1×163+9×162+B×161+C×160+8×16-1
=4096+2304+176+12+0.5
=(6588.5)10
(1)整數(shù)部分的轉(zhuǎn)換
整數(shù)部分的轉(zhuǎn)換采用的是除2取余法。其轉(zhuǎn)換原則是:將該十進制數(shù)除以2,得到一個商和余數(shù)(K0),再將商除以2,又得到一個新商和余數(shù)(K1),如此反復(fù),得到的商是0時得到余數(shù)(Kn-1),然后將所得到的各位余數(shù),以zui后余數(shù)為zui高位,zui初余數(shù)為zui低位依次排列,即Kn-1Kn-2…K1K0,這就是該十進制數(shù)對應(yīng)的二進制數(shù)。這種方法又稱為“倒 序法”。
例:將(126)10轉(zhuǎn)換成二進制數(shù)。
結(jié)果為:(126)10=(1111110)2
(2)小數(shù)部分的轉(zhuǎn)換
小數(shù)部分的轉(zhuǎn)換采用乘2取整法。其轉(zhuǎn)換原則是:將十進制數(shù)的小數(shù)乘以2,取乘積中的整數(shù)部分作為相應(yīng)二進制數(shù)小數(shù)點后zui高位K-1,反復(fù)乘2,逐次得到K-2、K-3、…、K-m,直到乘積的小數(shù)部分為0或1的位數(shù)達到精確度要求為止。然后把每次乘積的整數(shù)部分由上而下依次排列起來(K-1K-2…K-m),即是所求的二進制數(shù)。這種方法又稱為“順序法”。
例:將十進制數(shù)(0.534)10轉(zhuǎn)換成相應(yīng)的二進制數(shù)。
結(jié)果為:(0.534)10=(0.10001)2
例:將(50.25)10轉(zhuǎn)換成二進制數(shù)。
分析:對于這種既有整數(shù)又有小數(shù)部分的十進制數(shù),可將其整數(shù)和小數(shù)分別轉(zhuǎn)換成二進制數(shù),然后再把兩者連接起來即可。
因為(50)10=(110010)2,(0.25)10=(0.01)2
所以(50.25)10=(110010.01)2
(1)八進制轉(zhuǎn)換為二進制數(shù)
八進制數(shù)轉(zhuǎn)換成二進制數(shù)所使用的轉(zhuǎn)換原則是“一位拆三位”,即把一位八進制數(shù)對應(yīng)于三位二進制數(shù),然后按順序連接即可。
例:將(64.54)8轉(zhuǎn)換為二進制數(shù)。
6 4 . 5 4
↓ ↓ ↓ ↓ ↓
110 100 . 101 100
結(jié)果為:(64.54)8=(110100.101100)2
(2)二進制數(shù)轉(zhuǎn)換成八進制數(shù)
二進制數(shù)轉(zhuǎn)換成八進制數(shù)可概括為“三位并一位”,即從小數(shù)點開始向左右兩邊以每三位為一組,不足三位時補0,然后每組改成等值的一位八進制數(shù)即可。
例:將(110111.11011)2轉(zhuǎn)換成八進制數(shù)。
110 111 . 110 110
↓ ↓ ↓ ↓ ↓
6 7 . 6 6
結(jié)果為:(110111.11011)2=(67.66)8
(1)二進制數(shù)轉(zhuǎn)換成十六進制數(shù)
二進制數(shù)轉(zhuǎn)換成十六進制數(shù)的轉(zhuǎn)換原則是“四位并一位”,即以小數(shù)點為界,整數(shù)部分從右向左每4位為一組,若zui后一組不足4位,則在zui高位前面添0補足4位,然后從左邊第yi組起,將每組中的二進制數(shù)按權(quán)數(shù)相加得到對應(yīng)的十六進制數(shù),并依次寫出即可;小數(shù)部分從左向右每4位為一組,zui后一組不足4位時,尾部用0補足4位,然后按順序?qū)懗雒拷M二進制數(shù)對應(yīng)的十六進制數(shù)。
例:將(1111101100.0001101)2轉(zhuǎn)換成十六進制數(shù)。
0011 1110 1100 . 0001 1010
↓ ↓ ↓ ↓ ↓ ↓
3 E C . 1 A
結(jié)果為:(1111101100.0001101)2=(3EC.1A)16
(2)十六進制數(shù)轉(zhuǎn)換成二進制數(shù)
十六進制數(shù)轉(zhuǎn)換成二進制數(shù)的轉(zhuǎn)換原則是“一位拆四位”,即把1位十六進制數(shù)寫成對應(yīng)的4位二進制數(shù),然后按順序連接即可。
例:將(C41.BA7)16轉(zhuǎn)換為二進制數(shù)。
C 4 1 . B A 7
↓ ↓ ↓ ↓ ↓ ↓ ↓
1100 0100 0001 . 1011 1010 0111
結(jié)果為:(C41.BA7)16=(110001000001.101110100111)2
在程序設(shè)計中,為了區(qū)分不同進制,常在數(shù)字后加一英文字母作為后綴以示區(qū)別。
l 十進制數(shù),在數(shù)字后面加字母D或不加字母也可以,如6659D或6659。
l 二進制數(shù),在數(shù)字后面加字母B,如1101101B。
l 八進制數(shù),在數(shù)字后面加字母O,如1275O。
l 十六進制數(shù),在數(shù)字后面加字母H,如CFE7BH。
二進制數(shù)的運算包括算術(shù)運算和邏輯運算。
二進制數(shù)的算術(shù)運算包括加法、減法、乘法和除法運算。
(1)二進制數(shù)的加法運算
二進制數(shù)的加法運算法則是:0+0=0,0+1=1+0=1,1+1=10(向高位進位)。
例:求(101101.10001)2+(1011.11001)2的值。
解: 1 0 1 1 0 1 . 1 0 0 0 1
+ 1 0 1 1 . 1 1 0 0 1
1 1 1 0 0 1 . 0 1 0 1 1
結(jié)果為:(101101.10001)2+(1011.11001)2 =(111001.01011)2
總結(jié):從以上加法的過程可知,當兩個二進制數(shù)相加時,每一位是3個數(shù)相加,對本位則是把被加數(shù)、加數(shù)和來自低位的進位相加(進位可能是0,也可能是1)。
(2)二進制數(shù)的減法運算
二進制數(shù)的減法運算法則是:0-0=1-1=0,1-0=1,0-1=1(借1當二)。
例:求(110000.11)2-(001011.01)2的值。
解: 1 1 0 0 0 0 . 1 1
- 0 0 1 0 1 1 . 0 1
1 0 0 1 0 1 . 1 0
結(jié)果為:(110000.11)2-(001011.01)2=(100101.10)2
總結(jié):從以上運算過程可知,當兩數(shù)相減時,有的位會發(fā)生不夠減的情況,要向相鄰的高位借1當2。所以,在做減法時,除了每位相減外,還要考慮借位情況,實際上每位有3個數(shù)參加運算。
(3)二進制數(shù)的乘法運算
二進制數(shù)的乘法運算法則是:0×0=0,0×1=1×0=0,1×1=1。
例:求(1010)2×(1011)2的值。
解: 1 0 1 0
× 1 0 1 1
1 0 1 0
1 0 1 0
0 0 0 0
+ 1 0 1 0
1 1 0 1 1 1 0
結(jié)果為:(1010)2×(1011)2=(1101110)2
總結(jié):由以上運算過程可知,當兩數(shù)相乘時,每個部分積都取決于乘數(shù)。乘數(shù)的相應(yīng)位為1時,該次的部分積等于被乘數(shù);為0時,部分積為0。每次的部分積依次左移一位,將各部分積累起來,就得到了zui終結(jié)果。
(4)二進制數(shù)的除法運算
二進制數(shù)除法運算規(guī)則是:0÷0=0,0÷1=0(1÷0無意義),1÷1=1。
例:求(111101)2÷(1100)2的值。
解: 1 0 1
1100√ 1 1 1 1 0 1
- 1 1 0 0
1 1 0 1
- 1 1 0 0
1
結(jié)果為:商為101,余數(shù)為1。
總結(jié):在計算機內(nèi)部,二進制的加法是基本運算,利用加法可以實現(xiàn)二進制數(shù)的減法、乘法和除法運算。在計算機的運算過程中,應(yīng)用了“補碼”進行運算。
在計算機中,除了能表示正負、大小的“數(shù)量數(shù)”以及相應(yīng)的加、減、乘、除等基本算術(shù)運算外,還能表示事物邏輯判斷,即“真”、“假”、“是”、“非”等“邏輯數(shù)”的運算。能表示這種數(shù)的變量稱為邏輯變量。在邏輯運算中,都是用“1”或“0”來表示“真”或“假”,由此可見,邏輯運算是以二進制數(shù)為基礎(chǔ)的。
計算機的邏輯運算區(qū)別于算術(shù)運算的主要特點是:邏輯運算是按位進行的,位與位之間不像加減運算那么有進位或借位的關(guān)系。
邏輯運算主要包括的運算有:邏輯加法(又稱“或”運算)、邏輯乘法(又稱“與”運算)和邏輯“非”運算。此外,還有“異或”運算。
(1)邏輯與運算(乘法運算)
邏輯與運算常用符號“×”、“∧”或“&”來表示。如果A、B、C為邏輯變量,則A和B的邏輯與可表示成A×B=C、A∧B=C或A&B=C,讀作“A與B等于C”。一位二進制數(shù)的邏輯與運算規(guī)則如表1-2所示。
表1-2 與運算規(guī)則
A |
B |
A∧B(C) |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
由表1-2可知,邏輯與運算表示只有當參與運算的邏輯變量都取值為1時,其邏輯乘積才等于1,即一假必假,兩真才真。
這種邏輯與運算在實際生活中有許多應(yīng)用,例如,計算機的電源要想接通,必須把實驗室的電源總閘、USP電源開關(guān)以及計算機機箱的電源開關(guān)都接通才行。這些開關(guān)是串在一起的,它們按照“與”邏輯接通。為了書寫方便,邏輯與運算的符號可以略去不寫(在不致混淆的情況下),即A×B=A∧B=AB。
例:設(shè)A=1110011,B=1010101,求A∧B。
解:
1 1 1 0 0 1 1
∧ 1 0 1 0 1 0 1
1 0 1 0 0 0 1
結(jié)果為:A∧B=1010001。
(2)邏輯或運算(加法運算)
邏輯或運算通常用符號“+”或“ ”來表示。如果A、B、C為邏輯變量,則A和B的邏輯或可表示成A+B=C或A B=C,讀作“A或B等于C”。其運算規(guī)則如表1-3 所示。
表1-3 或運算規(guī)則
A |
B |
A V B(C) |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
由表1-3可知,邏輯或運算是:在給定的邏輯變量中,A或B只要有一個為1,其邏輯或的值為1;只有當兩者都為0,邏輯或才為0。即一真必真,兩假才假。
這種邏輯或運算在實際生活中有許多應(yīng)用,例如,房間里有一盞燈,裝了兩個開關(guān),這兩個開關(guān)是并聯(lián)的。顯然,任何一個開關(guān)接通或兩個開關(guān)同時接通,電燈都會亮。
例:設(shè)A=11001110,B=10011011,求A B。
解: 1 1 0 0 1 1 1 0
+ 1 0 0 1 1 0 1 1
1 1 0 1 1 1 1 1
結(jié)果為:A B=11011111。
(3)邏輯非運算(邏輯否定、邏輯求反)
設(shè)A為邏輯變量,則A的邏輯非運算記作 。邏輯非運算的規(guī)則為:如果不是0,則惟一的可能性就是1;反之亦然。邏輯非運算的真值表如表1-4所示。
表1-4 非運算規(guī)則
A |
|
0 |
1 |
1 |
0 |
例如,室內(nèi)的電燈,不是亮,就是滅,只有兩種可能性。
例:設(shè)A=111011001,B=110111101,求 、 。
解: =000100110, =001000010。
(4)邏輯異或運算(半加運算)
邏輯異或運算符為“ ”。如果A、B、C為邏輯變量,則A和B的邏輯異或可表示成A B=C,讀作“A異或B等于C”。邏輯異或的運算規(guī)則如表1-5所示。
表1-5 邏輯異或的運算規(guī)則
A |
B |
A B(C) |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
1 |
0 |
由表1-5可知,在給定的兩個邏輯變量中,只有兩個邏輯變量取值相同,異或運算的結(jié)果就為0;只有相異時,結(jié)果才為1。即一樣時為0,不一樣才為1。
例:設(shè)A=11010011,B=10110111,求A B。
解: 1 1 0 1 0 0 1 1
1 0 1 1 0 1 1 1
0 1 1 0 0 1 0 0
結(jié)果為:A B=01100100。
當兩個變量之間進行邏輯運算時,只在對應(yīng)位之間按上述規(guī)律進行邏輯運算,不同位之間沒有任何關(guān)系,當然,也就不存在算術(shù)運算中的進位或借位問題。
尚邦公考
微信號:dxgwyedu
讓學員帶著“?”來,帶著“!”踏上成“公”之路