官术网_书友最值得收藏!

第1章 基礎(chǔ)知識

本章提供了學(xué)習(xí)匯編語言程序設(shè)計所需的一些基礎(chǔ)知識。首先對匯編語言程序設(shè)計進行了概述,其次對計算機常用的幾種數(shù)制及其相互間的轉(zhuǎn)換方法進行了講解,并且介紹了數(shù)值數(shù)據(jù)和非數(shù)值數(shù)據(jù)在計算機中的表示方法。

1.1 匯編語言與匯編語言程序設(shè)計

1.1.1 匯編語言

計算機程序設(shè)計語言是人機交流的重要工具,可分為機器語言、匯編語言和高級語言。

機器語言是機器指令的集合,是一種面向機器的程序設(shè)計語言。機器指令是由0和1構(gòu)成的二進制代碼,不同種類的計算機具有各自的機器語言。其優(yōu)點是可為計算機直接接受,用其編寫的機器語言程序執(zhí)行速度快,占內(nèi)存空間小,可充分利用計算機的硬件特性;缺點是指令難記,用其編寫的機器語言程序難以閱讀且通用性差。

高級語言是面向問題求解過程或面向?qū)ο蟮某绦蛟O(shè)計語言。典型的高級語言有Pascal,F(xiàn)ORTRAN,C++,Java等。高級語言接近于人類的自然語言,而且通用于各種計算機。其優(yōu)點是易學(xué)易記,用其編寫的高級語言程序易讀易改,通用性強;其缺點是高級語言程序需經(jīng)過編譯或解釋方能被計算機接受,執(zhí)行速度慢,占內(nèi)存空間大,不能直接利用計算機的硬件特性。

匯編語言又稱為符號語言,實際上是一種符號化的機器語言。它將機器指令的操作碼、操作數(shù)由二進制代碼改為人們所熟悉的符號,例如

     ADD AL,5

表示將數(shù)字5加到AL中。匯編語言程序需經(jīng)過匯編才能為計算機接受,這一點不如機器語言方便。雖然所用符號為人們所熟悉,然而不如高級語言那樣接近人類的自然語言,程序編寫和交流較為困難。除此以外,匯編語言幾乎具備了機器語言的所有優(yōu)點,一定程度上彌補了機器語言的缺陷,而且不存在高級語言的上述缺點。可以認為,匯編語言是目前使用的唯一直接利用計算機硬件特性的程序設(shè)計語言。

1.1.2 匯編語言程序設(shè)計

匯編語言程序設(shè)計是指使用匯編語言設(shè)計程序的過程。為什么要學(xué)習(xí)匯編語言程序設(shè)計?其原因至少有以下幾點。

(1)通過匯編語言程序設(shè)計,人們可以高效地使用計算機解決現(xiàn)實問題。在解決同一現(xiàn)實問題時,匯編語言程序與高級語言程序相比,占用內(nèi)存更小,執(zhí)行速度更快。

(2)通過匯編語言程序設(shè)計,人們可以直接利用計算機的硬件特性,準確計算解決某一問題所需的時間,從而可實現(xiàn)實時控制。這一點是高級語言程序難以替代的。

(3)進行匯編語言程序設(shè)計,必然要從原理上認識、理解計算機的工作過程。因此,學(xué)習(xí)匯編語言程序設(shè)計不僅可以掌握一種高效的程序設(shè)計方法,而且對于學(xué)習(xí)計算機組成原理、計算機原理也大有幫助。

1.2 進位計數(shù)制

進位計數(shù)制是計數(shù)的一種方法。人們普遍習(xí)慣的進位計數(shù)制為十進制。十進制數(shù)的基為10,有10個數(shù)碼:0、1、2、3、4、5、6、7、8及9,遵循逢十進一的規(guī)則。二進制數(shù)的基為2,有2個數(shù)碼:0、1,遵循逢二進一的規(guī)則。以此類推,N進制數(shù)的基為N,有N個數(shù)碼:0、1、2、…、N-1,遵循逢N進一的規(guī)則。常用的幾種進位計數(shù)制的情況如表1.1所示。

表1.1 常用的進位計數(shù)制

1.2.1 常用計數(shù)制及其數(shù)的算術(shù)運算

1. 十進制(Decimal)

首先觀察以下十進制數(shù)的組成:

361.905D=3×102+6×101+1×100+9×10-1+0×10-2+5×10-3

不難看出每一個數(shù)碼根據(jù)它在這個數(shù)中所處的位置(數(shù)位)來決定實際數(shù)值。事實上,任意一個正的十進制數(shù)S=Kn-1Kn-2K0K-1K-2K-m+1K-m都可以表示成以下形式:

S=Kn-1×10n-1+Kn-2×10n-2+…+K1×101+K0×100+K-1×10-1+…+K-m+1×10-m+1+K-m×10-m

其中Ki可以是0至9這十個數(shù)碼中的任意一個,mn均為自然數(shù),10i稱為權(quán)。一般而言,一個正的N進制數(shù)S=Kn-1Kn-2K0K-1K-2K-m+1K-m可以表示為以下通用形式:

其中Ki可以是0至N-1中任意一個數(shù)字,mn均為自然數(shù),Ni為各數(shù)位相應(yīng)的權(quán)。

2.二進制(Binary)

在日常生活中,存在著大量的兩種對立的現(xiàn)象,例如:是和非,開和關(guān),通和斷。電子元件、物理器件中兩種狀態(tài)易于實現(xiàn),如電壓、電流的有和無,晶體管的導(dǎo)通和截止,這兩種狀態(tài)是非常穩(wěn)定的,而找到8種、10種或16種穩(wěn)定的狀態(tài)則要復(fù)雜得多,所以計算機中采用二進制作為進位數(shù)制,以便于存儲及計算的物理實現(xiàn)。

二進制數(shù)與人們常用的十進制數(shù)的對照關(guān)系如表1.2所示。

表1.2 常用進位計數(shù)制對照表

一個二進制數(shù)也可以用上述通用形式來表示。例如:

11101.011B=1×24+1×23+1×22+0×21+1×20+0×2-1+1×2-2+1×2-3

二進制數(shù)的算術(shù)運算與十進制數(shù)的算術(shù)運算類似,區(qū)別僅在于該運算遵循逢二進一的規(guī)則。

【例1.1】(1)1101B+1011B=11000B

(2)1101B-1011B=0010B

(3)1101B×1011B=10001111B

(4)1111B÷101B=11B

3. 十六進制(Hexadecimal)

十六進制數(shù)采用0~9,A~F十六個數(shù)碼,這里A表示10D,B表示11D,C表示12D,D表示13D,E表示14D,F(xiàn)表示15D。

十六進制數(shù)與人們常用的十進制數(shù)的對照關(guān)系如表1.2所示。

一個十六進制數(shù)也可以用上述通用形式來表示。例如

6B.0CH =6×161+B×160+0×16-1+C×16-2

十六進制數(shù)的算術(shù)運算與十進制數(shù)的算術(shù)運算類似,區(qū)別僅在于該運算遵循逢十六進一的規(guī)則。

【例1.2】(1)8A04H+110CH=9B10H

(2)8A04H-110CH=78F8H

在匯編語言程序中,數(shù)據(jù)通常采用十六進制形式,匯編語言的調(diào)試、列表文件中顯示的數(shù)據(jù)也都是使用十六進制形式,所以有必要熟練掌握這種數(shù)制及其數(shù)的運算。

4.八進制(Octal)

八進制數(shù)采用0~7八個數(shù)碼,與十進制數(shù)的前八個數(shù)碼一一對應(yīng),如表1.2所示。

一個八進制數(shù)也可以用上述通用形式來表示。例如

36.53Q=3×81+6×80+5×8-1+3×8-2

1.2.2 數(shù)制轉(zhuǎn)換

1. 非十進制數(shù)→十進制數(shù)

非十進制數(shù)轉(zhuǎn)換為十進制數(shù)的方法是:將非十進制數(shù)用上述通用形式表示,即按權(quán)展開,計算的結(jié)果即為十進制數(shù)。不管非十進制數(shù)是否帶有小數(shù)部分,均可用這種方法轉(zhuǎn)換。

【例1.3】1010110B=1×26+0×25+1×24+0×23+1×22+1×21+0×20=86D

4D.8H=4×161+13×160+8×16-1=77.5D

1362Q=1×83+3×82+6×81+2×80=754D

2. 十進制數(shù)→非十進制數(shù)

十進制數(shù)轉(zhuǎn)換為二進制、八進制及十六進制等非十進制數(shù)的工作可分為整數(shù)的轉(zhuǎn)換和小數(shù)的轉(zhuǎn)換兩種情況。一個十進制數(shù)與其對應(yīng)的非十進制數(shù)相比,兩者的整數(shù)部分和小數(shù)部分分別相等。于是,將一個十進制數(shù)轉(zhuǎn)換為非十進制數(shù)時,可以對其整數(shù)部分和小數(shù)部分分別作轉(zhuǎn)換,將兩個轉(zhuǎn)換結(jié)果結(jié)合起來就可以得到對應(yīng)的非十進制數(shù)。

(1)十進制整數(shù)→非十進制整數(shù)

十進制整數(shù)轉(zhuǎn)換為二進制、八進制及十六進制等非十進制整數(shù)可以采用除基取余法或減權(quán)記位法。前一方法較易掌握,但使用時較煩瑣;后一方法使用時較方便,但需要熟悉非十進制各數(shù)位對應(yīng)的權(quán)值。

① 除基取余法。將十進制整數(shù)及此間產(chǎn)生的商不斷除以非十進制數(shù)的基,直至商為0為止,并記下每一次相除所得到的余數(shù),按照從后往前的次序,將各余數(shù)作為Kn-1Kn-2K0,從而構(gòu)成對應(yīng)的非十進制數(shù)。

【例1.4】將233D轉(zhuǎn)換為十六進制數(shù)。

按照題目要求,基應(yīng)取16,具體轉(zhuǎn)換過程如下:

轉(zhuǎn)換結(jié)果為:233D=E9H。

【例1.5】將233D轉(zhuǎn)換為二進制數(shù)。

按照題目要求,基應(yīng)取2,具體轉(zhuǎn)換過程如下:

轉(zhuǎn)換結(jié)果為:233D=11101001B。

② 減權(quán)記位法。減權(quán)記位法常用于十進制數(shù)到二進制數(shù)的轉(zhuǎn)換,對于十進制數(shù)到其他進制數(shù)的轉(zhuǎn)換使用這種方法則不夠方便。這里僅介紹十進制數(shù)到二進制數(shù)轉(zhuǎn)換時,減權(quán)記位法的具體內(nèi)容。

將十進制整數(shù)與其最相近的權(quán)值2n-1做比較,前者不小于后者則減去2n-1,并在n-1位記1;否則在n-1位記0。然后再與2n-2做比較并做相同的工作,直至最低位被記為1或0。從n-1位、n-2位直至最低位所記的1或0就構(gòu)成了二進制數(shù)Kn-1Kn-2K0。通常第1次比較所用的2n-1取做小于等于十進制整數(shù)的最大二進位權(quán)值。

【例1.6】將233D轉(zhuǎn)換為二進制數(shù)。

由于27<233D<28,故開始用做比較的數(shù)值取27

具體轉(zhuǎn)換過程如下:

轉(zhuǎn)換結(jié)果為:233D=11101001B。

【例1.7】將130D轉(zhuǎn)換為二進制數(shù)。

考慮到130D為128D與2D之和,即為27與21之和,于是對應(yīng)的二進制數(shù)K7K6K0K7=1,K1=1,其余位均為0,也即轉(zhuǎn)換結(jié)果為130D=10000010B。

由該例可見,在熟悉二進制各數(shù)位對應(yīng)的權(quán)值的基礎(chǔ)上,參照減權(quán)記位法可以方便地進行十進制整數(shù)到二進制整數(shù)的轉(zhuǎn)換。

(2)十進制小數(shù)→非十進制小數(shù)

十進制小數(shù)轉(zhuǎn)換為二進制、八進制及十六進制等非十進制小數(shù)可以采用乘基取整法或減權(quán)記位法。前一方法較易掌握,但使用時較煩瑣;后一方法使用時較方便,但需要熟悉非十進制數(shù)各數(shù)位對應(yīng)的權(quán)值。

① 乘基取整法。將十進制小數(shù)以及此間產(chǎn)生的小數(shù)部分不斷乘以非十進制數(shù)的基,并記下每次相乘所得到的整數(shù)部分,直至積的小數(shù)部分為0為止,按照從前往后的次序,將各整數(shù)部分作為K-1K-2,…K-m,就構(gòu)成了對應(yīng)的非十進制數(shù)K-1K-2K-m

【例1.8】將0.6875D轉(zhuǎn)換為二進制數(shù)。

按照題目要求,基應(yīng)取2,具體轉(zhuǎn)換過程如下:

轉(zhuǎn)換結(jié)果為:0.6875D=0.1011B。

【例1.9】將0.6875D轉(zhuǎn)換為八進制數(shù)。

按照題目要求,基應(yīng)取8,具體轉(zhuǎn)換過程如下:

轉(zhuǎn)換結(jié)果為:0.6875D=0.54Q。

當一個十進制小數(shù)對應(yīng)的非十進制小數(shù)的位數(shù)過多時,可根據(jù)需要取前若干位作為近似結(jié)果。

② 減權(quán)計位法。與上述十進制整數(shù)轉(zhuǎn)換為二進制整數(shù)時使用的減權(quán)計位法類似,但有兩點區(qū)別:其一,十進制小數(shù)首先應(yīng)與2-1比較,然后與2-2比較,依次類推;其二,有時要根據(jù)需要,取部分小數(shù)位作為近似轉(zhuǎn)換結(jié)果。

【例1.10】將0.6875D轉(zhuǎn)換為二進制數(shù)。

具體轉(zhuǎn)換過程如下:

轉(zhuǎn)換結(jié)果為:0.6875D=0.1011B。

如前所述,將一個十進制數(shù)轉(zhuǎn)換為非十進制數(shù)時,可以對其整數(shù)部分和小數(shù)部分分別作轉(zhuǎn)換,然后將整數(shù)部分和小數(shù)部分的轉(zhuǎn)換結(jié)果結(jié)合成為最終結(jié)果。

【例1.11】將233.6875D轉(zhuǎn)換為二進制數(shù)。

由前面的例題可知:

233D=11101001B

0.6875D=0.1011B

于是轉(zhuǎn)換結(jié)果為:233.6875D=11101001.1011B。

3.二進制數(shù)←→ 八進制數(shù)、十六進制數(shù)

由于一位八進制數(shù)對應(yīng)三位二進制數(shù),一位十六進制數(shù)對應(yīng)四位二進制數(shù),于是二進制數(shù)與八進制數(shù)、十六進制數(shù)之間的轉(zhuǎn)換比較簡單。

(1)二進制數(shù)→八進制數(shù)、十六進制數(shù)

將二進制數(shù)由小數(shù)點向左右每三位分為一組(不足三位則用0補充),每一組用對應(yīng)的八進制數(shù)碼表示,即可得到對應(yīng)的八進制數(shù)。類似地,將二進制數(shù)由小數(shù)點向左右每四位分為一組(不足四位則用0補充),每一組用對應(yīng)的十六進制數(shù)碼表示,即可得到對應(yīng)的十六進制數(shù)。

【例1.12】將01011101.01B分別轉(zhuǎn)換為八進制數(shù)和十六進制數(shù)。

          01011101.01B = 001011101.010B = 135.2Q
          01011101.01B = 01011101.0100B= 5D.4H

說明:在分組中若不足三位或不足四位時,一定要用0補充,否則極易出錯。就該例而言,若不注意這一點,就極易將結(jié)果錯寫為135.1Q和5D.1H。

(2)八進制數(shù)、十六進制數(shù)→二進制數(shù)

將八進制數(shù)的每一位數(shù)用三位二進制數(shù)碼表示,即可得到對應(yīng)的二進制數(shù)。類似地,將十六進制數(shù)的每一位數(shù)用四位二進制數(shù)碼表示,即可得到對應(yīng)的二進制數(shù)。必要時可以去掉轉(zhuǎn)換結(jié)果中的前0和尾0。

【例1.13】分別將45.4Q和27CH轉(zhuǎn)換為二進制數(shù)。

          45.4Q=100101.100B=100101.1B
          27CH=001001111100B=1001111100B

從以上介紹可以看出,在將十進制數(shù)轉(zhuǎn)換為非十進制數(shù)時,轉(zhuǎn)換為二進制數(shù)較為簡單,轉(zhuǎn)換為八進制數(shù)、十六進制則較為復(fù)雜。考慮到二進制數(shù)轉(zhuǎn)換為八進制數(shù)、十六進制數(shù)比較簡單,故在需要將十進制數(shù)轉(zhuǎn)換為八進制數(shù)、十六進制數(shù)時,可以先將其轉(zhuǎn)換為二進制數(shù),然后再由二進制數(shù)轉(zhuǎn)換為八進制數(shù)、十六進制數(shù)。

【例1.14】將233.6875D轉(zhuǎn)換為十六進制數(shù)。

首先將233.6875D轉(zhuǎn)換為二進制數(shù),由【例1.11】可知:

          233.6875D = 11101001.1011B

然后將11101001.1011B轉(zhuǎn)換為十六進制數(shù)。

          11101001.1011B = E9.BH

于是十進制數(shù)到十六進制數(shù)的轉(zhuǎn)換結(jié)果為:233.6875D = E9.BH

1.3 計算機中數(shù)和字符的表示

人們在使用計算機時,需要計算機不僅能處理數(shù),即數(shù)值數(shù)據(jù),而且能處理非數(shù)值數(shù)據(jù),如字符、聲音和圖像等。雖然非數(shù)值數(shù)據(jù)在計算機中也是以二進制代碼的形式存儲,但它們的實際意義與數(shù)值數(shù)據(jù)不同。

1.3.1 數(shù)的表示

1. 機器數(shù)與真值

在本書前面的介紹中,均將數(shù)視為無符號數(shù)。例如,10100010B的每一位二進制數(shù)碼均被視為數(shù)值,其對應(yīng)的十進制數(shù)為162。有符號數(shù)在計算機中如何表示?首先需要解決數(shù)符如何表示的問題。在計算機中實際采用數(shù)值化的方法來表示數(shù)符,通常用0表示正,用1表示負。這樣表示的數(shù)稱為機器數(shù),而人們所習(xí)慣的用+、-分別表示正、負的數(shù)稱為真值。機器數(shù)的位數(shù)與計算機的字長有關(guān),例如

這里機器數(shù)采用原碼表示。實際上,機器數(shù)還可以采用補碼、反碼表示。

2.原碼

原碼的最高位表示真值的數(shù)符,其余位為數(shù)值位,且與真值的數(shù)值位相同,必要時在數(shù)值位前加上前0。

數(shù)的原碼表示具有直觀、與真值的轉(zhuǎn)換方法簡單等優(yōu)點,但是原碼有著算術(shù)運算復(fù)雜的缺陷。與手算相同,做加法運算時,首先要判斷兩數(shù)的數(shù)符,同號則相加,異號則相減。做減法運算時,還必須比較兩數(shù)的絕對值,用較大的絕對值減去較小的絕對值,差的數(shù)符則采用絕對值較大者的數(shù)符。以上的算法對于硬件實現(xiàn)來說比較困難。

3.補碼

補碼的引入,是為了簡化減法運算。補碼的概念在日常生活中經(jīng)常用到,例如手表的校時。假定手表停在11時,而標準時間為9時,可以使用兩種校時方法:一種方法是逆時針調(diào)2小時,即11-2=9;另一種方法是順時針調(diào)10小時,在調(diào)至12時后則為0時,即到12時時歸零,因此有11+10=9(稱為模加)。于是,就手表校時而言有:

這里12稱為模,10稱為2的補數(shù)。由此看出,減去一個數(shù)等價于加上該數(shù)的補數(shù)。下面介紹計算機中使用的補碼的含義、求取方法及其運算。

(1)補碼定義

當一個數(shù)為正數(shù),則其補碼就是該數(shù)本身;為負數(shù),則其補碼等于模值與該數(shù)絕對值之差。式中的n為補碼的位數(shù)。

(2)根據(jù)真值求補碼

根據(jù)補碼定義可以求取一個數(shù)的補碼,然而還可以采用更為簡便的方法。求取一個數(shù)的n位補碼的簡便方法是:對于正數(shù),通過補前0,將其數(shù)值部分補至n位即可;對于負數(shù)通過補前0,將其數(shù)值部分補至n位,然后按位取反并在末位加1即可。

【例1.15】求出以下各數(shù)的8位補碼:

          +1000011B,-111000B,+1111111B,-10000000B,0

① 將+1000011B的數(shù)值部分通過補前0達到8位,即可得到其補碼:

          [+1000011B]=01000011B

② 將-111000B的數(shù)值部分通過補前0達到8位,即00111000B。

          按位取反后得到:11000111B
          末位加1后得到:11001000B
          [-111000B]=11001000B

③ 將+1111111B的數(shù)值部分通過補前0達到8位,即可得到其補碼:

          [1111111B]=01111111B

④ -10000000B的數(shù)值部分已達8位,即10000000B。

          按位取反后得到:01111111B
          末位加1后得到:10000000B
          [-10000000]=10000000B

⑤ 用同樣方法不難求得:

          [0]=0

(3)根據(jù)補碼求真值

補碼最高位為0,則真值數(shù)符為“+”,真值數(shù)值位與補碼其余位相同;補碼最高位為1,則真值數(shù)符為“-”,將補碼所有位按位取反且末位加1后就可得到真值的數(shù)值位。

用這種方法可以方便的將【例1.15】中求得的補碼還原為對應(yīng)的真值。

(4)補碼的表示范圍及補碼的擴展

① 補碼的表示范圍。若要求給出+10000000B和-10000100B的8位補碼,結(jié)果如何?顯然,將求不出正確的結(jié)果。原因在于,這兩個數(shù)超出了8位補碼所能表示的范圍-128~+127。一般而言,n位補碼所能表示的范圍為-2n-1~+2n-1-1。在計算機中,n常取8,16,32等。以上兩個數(shù)可以表示為16位補碼:

[+10000000B]=0000000010000000B

[-10000100B]=1111111101111100B

② 補碼的擴展。為了滿足進行算術(shù)運算等方面的需要,有時要求將一個補碼擴展成雙倍位數(shù),比如由8位補碼擴展為16位補碼,由16位補碼擴展為32位補碼等。擴展方法是:將擴展的各位都置為原來補碼的最高位。

例如:[+1000011B]=01000011B=0000000001000011B

[-111000B]=11001000B=1111111111001000B

(5)補碼的加減法運算

補碼加法規(guī)則:[X+Y]=[X]+[Y]

補碼減法規(guī)則:[X-Y]=[X]+[-Y]

由此可見,使用補碼可以將減法運算轉(zhuǎn)換成加法運算,避免了前述減法運算中的困難。

【例1.16】補碼加法運算。

上述②、④中從最高位向前的進位由于位數(shù)的限制而自動丟失,但這并不影響運算結(jié)果的正確性。

【例1.17】補碼的減法運算。

在計算機中,補碼減法是通過對減數(shù)求補后把減法轉(zhuǎn)換為加法進行的。①、④中的最高位向前位的進位同樣自動丟失,而不影響運算的結(jié)果。

4.反碼

反碼的最高位表示真值的數(shù)符,0表示正,1表示負。當反碼最高位為0,則其余位與真值的數(shù)值位相同;當反碼最高位為1,則其余位是真值的數(shù)值位按位取反后的結(jié)果。

5.BCD碼

十進制小數(shù)和二進制小數(shù)相互轉(zhuǎn)換時可能產(chǎn)生誤差,而且日常習(xí)慣使用的是十進制,計算機中內(nèi)部采用的是二進制。為方便十進制和二進制之間的轉(zhuǎn)換,計算機允許內(nèi)部采用一組四位二進制數(shù)來表示一位十進制數(shù),組間仍然采用“逢十進一”的規(guī)則進行。這種采用二進制表示的十進制數(shù)編碼稱為BCD碼(Binary Coded Decimal)碼。該編碼的方法和使用詳見本書第五章。

1.3.2 字符的表示

計算機只能識別二進制數(shù),因此計算機中的數(shù)字、字母、符號、控制符、漢字等也必須采用二進制進行編碼。

1.ASCII碼

非漢字常用字符包括:

字母:A,B,…,Z;a,b,…,z

數(shù)字:0,1,…,9

專用符號:+,-,*,/ …

為了使計算機硬件能夠識別和處理這些字符,必須對字符按一定規(guī)則用二進制編碼,目前廣泛使用的是ASCⅡ碼(美國國家標準信息交換碼見附錄B),這種代碼用一個字節(jié)表示一個字符,最高位一般為校驗位。

2.漢字編碼

有了ASCII碼,計算機就能處理數(shù)字和英文字母等字符,但是還不能處理漢字字符。為了使計算機能夠處理漢字信息,就必須對漢字也進行編碼。

(1)GB2312漢字編碼

我國于1981年頒布了第一個國家標準——《信息交換用漢字編碼字符集·基本集》(GB 2312)。該標準選出6763個常用漢字和682個非漢字字符,為每個字符規(guī)定了標準代碼,以便在不同的計算機系統(tǒng)之間進行漢字文本的交換。

(2)GBK漢字內(nèi)碼擴充規(guī)范

GB 2312只有6763個簡體漢字,在許多處理中有很大缺憾,如戶籍中的人名、地名等。GBK是我國1995年發(fā)布的又一個漢字編碼標準,一共有21003個漢字和883個圖形符號,與GB 2312國標漢字字符集及其內(nèi)碼保持兼容,增加了大量了繁體字和符號。

(3)GB18030漢字編碼標準

2000年我國政府發(fā)布新的漢字國家標準,解決GBK與臺灣和香港地區(qū)Big5漢字編碼不兼容的問題,同時也與國際標準化組織(ISO)制訂的全球集中統(tǒng)一編碼UCS-2接軌,保護了已有的大量中文資源。GB 18083標準與GB 2312標準和GBK標準保持向下兼容,擴充了UCS中其他字符。

習(xí)題

1.1 將下列十進制數(shù)轉(zhuǎn)換為二進制數(shù)和十六進制數(shù)。

(1)(369)D =( )B =( )H

(2)(355)D =( )B =( )H

(3)(127)D =( )B =( )H

(4)(1000)D =( )B =( )H

1.2 將下列二進制數(shù)轉(zhuǎn)換為十六進制數(shù)和十進制數(shù)。

(1)(1011110111)B=( )H=( )D

(2)(11000100101)B=( )H=( )D

(3)(10000000)B=( )H=( )D

(4)(11100101)B=( )H=( )D

1.3 下表給出了十進制數(shù),請寫出與之對應(yīng)的二進制真值和8位補碼。

1.4 下列各數(shù)均為十進制數(shù),請用8位補碼計算下列各題,并用十六進制數(shù)表示其運算結(jié)果。

1)69-48

2)-69+48

3)-69-48

1.5 分別將下列各數(shù)看作無符號數(shù)和補碼,則各自對應(yīng)的十進制數(shù)是什么?

1)98H

2)31H

3)FFH

4)80H

1.6 如果用16位存儲一個無符號數(shù),這個數(shù)的范圍是什么?如果存儲放入是一個補碼表示的有符號數(shù),那么這個數(shù)的范圍是什么?

1.7 請寫出下列字符串的ASCII碼值。

            'Hello'
            'Please  give  me  $10.'
主站蜘蛛池模板: 启东市| 宝清县| 东丰县| 洛扎县| 奈曼旗| 时尚| 浦东新区| 启东市| 祁门县| 伊川县| 白城市| 化德县| 库车县| 瓮安县| 合作市| 简阳市| 高要市| 平度市| 顺昌县| 凤城市| 天台县| 宜君县| 富民县| 三河市| 香格里拉县| 南丰县| 分宜县| 开远市| 日照市| 泰顺县| 焦作市| 德保县| 吐鲁番市| 福清市| 壤塘县| 友谊县| 上高县| 定南县| 赣榆县| 永新县| 调兵山市|