- 計算機應用基礎(Windows 7+Office 2016)
- 張敏華 史小英主編
- 5840字
- 2020-10-13 18:05:48
任務二 了解計算機中信息的表示和存儲
任務要求
肖磊知道利用計算機技術可以采集、存儲和處理各種用戶信息,也可將這些用戶信息轉換成用戶可以識別的文字、聲音或音視頻進行輸出,然而讓肖磊疑惑的是,這些信息在計算機內部又是如何表示的呢?該如何對信息進行量化呢?肖磊認為,學習好這方面的知識,才能更好地使用計算機。
本任務要求認識計算機中的數據及其單位,了解數制及其轉換,認識二進制數的運算,并了解計算機中字符的編碼規則。
任務實現
(一)認識計算機中的數據及其單位
在計算機中,各種信息都是以數據的形式出現的,對數據進行處理后產生的結果為信息,因此數據是計算機中信息的載體,數據本身沒有意義,只有經過處理和描述,才能賦予其實際意義,如單獨一個數據“32℃”并沒有什么實際意義,但如果表示為“今天的氣溫是32℃”時,這條信息就有意義了。
計算機中處理的數據可分為數值數據和非數值數據(如字母、漢字和圖形等)兩大類,無論什么類型的數據,在計算機內部都是以二進制的形式存儲和運算的。計算機在與外部交流時會采用人們熟悉和便于閱讀的形式表示,如十進制數據、文字表達和圖形顯示等,這之間的轉換則由計算機系統來完成。
在計算機內存儲和運算數據時,通常要涉及的數據單位有以下3種。
? 位(bit)。計算機中的數據都是以二進制來表示的,二進制的代碼只有“0”“1”兩個數碼,采用多個數碼(0和1的組合)來表示一個數,其中的每一個數碼稱為1位,位是計算機中最小的數據單位。
? 字節(Byte,簡寫為B)。在對二進制數據進行存儲時,以8位二進制代碼為一個單元存放在一起,稱為1個字節,即1 Byte =8 bit。字節是計算機中信息組織和存儲的基本單位,也是計算機體系結構的基本單位。在計算機中,通常用B(字節)、KB(千字節)、MB(兆字節)或GB(吉字節)為單位來表示存儲器(如內存、硬盤和U盤等)的存儲容量或文件的大小,存儲容量指存儲器中能夠包含的字節數。存儲單位B、KB、MB、GB和TB的換算關系如下。
1 KB(千字節)=1 024 B(字節)=210 B(字節)
1 MB(兆字節)=1 024 KB(千字節)=220 B(字節)
1 GB(吉字節)=1 024 MB(兆字節)=230 B(字節)
1 TB(太字節)=1 024 GB(吉字節)=240 B(字節)
? 字長。人們將計算機一次能夠并行處理的二進制代碼的位數稱為字長。字長是衡量計算機性能的一個重要指標,字長越長,數據所包含的位數越多,計算機的數據處理速度越快。計算機的字長通常是字節的整倍數,如8位、16位、32位、64位和128位等。
(二)了解數制及其轉換

微課:數制轉換
數制是指用一組固定的符號和統一的規則來表示數值的方法。其中,按照進位方式計數的數制稱為進位計數制。在日常生活中,人們習慣用的進位計數制是十進制,而計算機則使用二進制;除此以外,還包括八進制和十六進制等。顧名思義,二進制就是逢二進一的數字表示方法;依次類推,十進制就是逢十進一,八進制就是逢八進一等。
進位計數制中每個數碼的數值不僅取決于數碼本身,其數值的大小還取決于該數碼在數中的位置。例如十進制數828.41,整數部分的第1個數碼“8”處在百位,表示800;第2個數碼“2”處在十位,表示20;第3個數碼“8“處在個位,表示8;小數點后第1個數碼“4”處在十分位,表示0.4;小數點后第2個數碼“1”處在百分位,表示0.01。也就是說,處在不同位置的數碼所代表的數值是不同的,數碼在一個數中的位置稱為數制的數位;數制中數碼的個數稱為數制的基數,十進制數有0、1、2、3、4、5、6、7、8、9共10個數碼,其基數為10;在每個數位上的數碼符號所代表的數值等于該數位上的數碼乘以一個固定值,該固定值稱為數制的位權數,數碼所在的數位不同,其位權數也有所不同。
無論在何種進位計數制中,數值都可寫成按位權展開的形式,如十進制數828.41可寫成:
828.41=8×100+2×10+8×1+4×0.1+1×0.01
或者
828.41=8×102+2×101+8×100+4×10-1+1×10-2
上式為數值按位權展開的表達式,其中,10i稱為十進制數的位權數,其基數為10,使用不同的基數,便可得到不同的進位計數制。設R表示基數,則稱為R進制,使用R個基本的數碼,Ri就是位權,其加法運算規則是“逢R進一”,任意一個R進制數D均可以展開表示為:

上式中的Ki為第i位的數碼,可以為0,1,2,…,R-1中的任何一個數,Ri表示第i位的權。表1-2為計算機中常用的幾種進位計數制的表示。
表1-2 計算機中常用的幾種進位計數制的表示

通過表1-2可知,對于數據4A9E,從使用的數碼可以判斷出其為十六進制數。而對于數據492來說,如何判斷屬于哪種數制呢?在計算機中,為了區分不同進制的數,可以用括號加數制基數下標的方式來表示不同數制的數,例如,(492)10表示十進制數,(1001.1)2表示二進制數,(4A9E)16表示十六進制數;也可以用帶有字母的形式分別表示為(492)D、(1001.1)B和(4A9E)H。在程序設計中,為了區分不同進制數,常在數字后直接加英文字母后綴來區別,如492D、1001.1B等。
表1-3所示為上述幾種常用數制的對照關系表。
表1-3 常用數制對照關系表

提示
通過表1-3可以看出,采用不同的數制表示同一個數時,基數越大,則使用的位數越少,如十進數12,需要4位二進制數來表示,需要2位八進制數來表示,只需1位十六制數來表示。所以,在一些C語言的程序中,常采用八進制和十六進制來表示數據。
下面將具體介紹4種常用數制之間的轉換方法。
1. 非十進制數轉換為十進制數
將二進制數、八進制數和十六進制數轉換為十進制數時,只需用該數制的各位數乘以各自對應的位權數,然后將乘積相加。用按位權展開的方法即可得到對應的結果。
【例1-1】將二進制數10110轉換成十進制數。
先將二進制數10110按位權展開,然后將乘積相加,轉換過程如下所示。
(10110)2=(1×24+0×23+1×22+1×21+0×20)10
=(16+4+2)10
=(22)10
【例1-2】將八進制數232轉換成十進制數。
先將八進制數232按位權展開,然后將乘積相加,轉換過程如下所示。
(232)8=(2×82+3×81+2×80)10
=(128+24+2)10
=(154)10
【例1-3】將十六進制數232轉換成十進制數。
先將十六進制數232按位權展開,然后將乘積相加,轉換過程如下所示。
(232)16=(2×162+3×161+2×160)10
=(512+48+2)10
=(562)10
2. 十進制數轉換成其他進制數
將十進制數轉換成二進制數、八進制數和十六進制數時,可將數字分成整數和小數分別轉換,然后拼接起來。
例如,將十進制數轉換成二進制數時,整數部分采用“除2取余倒讀”法,即將該十進制數除以2,得到一個商和余數(K0),再將商數除以2,又得到一個新的商和余數(K1),如此反復,直到商是0時得到余數(Kn-1),然后將得到的各次余數,以最后余數為最高位,最初余數為最低位依次排列,即Kn-1…K1 K0,這就是該十進制數對應的二進制整數部分。
小數部分采用“乘2取整正讀”法,即將十進制的小數乘2,取乘積中的整數部分作為相應二進制小數點后最高位K-1,取乘積中的小數部分反復乘2,逐次得到K-2 K-3…K-m,直到乘積的小數部分為0或位數達到所需的精確度要求為止,然后把每次乘積所得的整數部分由上而下(即從小數點自左往右)依次排列起來(K-1 K-2…K-m)即為所求的二進制數的小數部分。
同理,將十進制數轉換成八進制數時,整數部分除8取余,小數部分乘8取整;將十進制數轉換成十六進制數時,整數部分除16取余,小數部分乘16取整。
提示
在進行小數部分的轉換時,有些十進制小數不能轉換為有限位的二進制小數,此時只能用近似值表示。例如,(0.57)10不能用有限位二進制表示,如果要求5位小數近似值,則得到(0.57)10≈(0.10010)2。
【例1-4】將十進制數225.625轉換成二進制數。
用除2取余法進行整數部分轉換,再用乘2取整法進行小數部分轉換,具體轉換過程如下所示。

3. 二進制數轉換成八進制數、十六進制數
二進制數轉換成八進制數所采用的轉換原則是“3位分一組”,即以小數點為界,整數部分從右向左每3位為一組,若最后一組不足3位,則在最高位前面添0補足3位,然后將每組中的二進制數按權相加得到對應的八進制數;小數部分從左向右每3位分為一組,最后一組不足3位時,尾部用0補足3位,然后按照順序寫出每組二進制數對應的八進制數即可。
【例1-5】將二進制數1101001.101轉換為八進制數。
轉換過程如下所示。

得到的結果為:(1101001.101)2 = (151.5)8
二進制數轉換成十六進制數所采用的轉換原則與上面的類似,為“4位分一組”,即以小數點為界,整數部分從右向左、小數部分從左向右每4位一組,不足4位用0補齊即可。
【例1-6】將二進制數101110011000111011轉換為十六進制數。
轉換過程如下所示。

得到的結果為:(101110011000111011)2 = (2E63B)16
4. 八進制數、十六進制數轉換成二進制數
八進制數轉換成二進制數的轉換原則是“一分為三”,即從八進制數的低位開始,將每一位上的八進制數寫成對應的3位二進制數。如有小數部分,則從小數點開始,分別向左右兩邊按上述方法進行轉換即可。
【例1-7】將八進制數162.4轉換為二進制數。
轉換過程如下所示。

得到的結果為:(162.4)8 = (001110010.100)2
十六進制數轉換成二進制數的轉換原則是“一分為四”,即把每一位上的十六進制數寫成對應的4位二進制數。
【例1-8】將十六進制數3B7D轉換為二進制數。
轉換過程如下所示。

得到的結果為:(3B7D)16 = (0011101101111101)2
(三)認識二進制數的運算
計算機內部采用二進制表示數據,其主要原因是技術實現簡單、易于進行轉換、二進制運算法則簡單、可以方便地利用邏輯代數分析和設計計算機的邏輯電路等。下面將對二進制的算術運算和邏輯運算進行簡要介紹。
1. 二進制的算術運算
二進制的算術運算也就是通常所說的四則運算,包括加、減、乘和除,運算比較簡單,其具體運算規則如下。
? 加法運算。按“逢二進一”法,向高位進位,運算規則為:0+0=0、0+1=1、1+0=1、1+1=10。例如,(10011.01)2+(100011.11)2=(110111.00)2。
? 減法運算。減法實質上是加上一個負數,主要應用于補碼運算,運算規則為:0-0=0、1-0=1、0-1=1(向高位借位,結果本位為1)、1-1=0。例如,(110011)2- (001101)2=(100110)2。
? 乘法運算。乘法運算與常見的十進制數對應的運算規則類似,運算規則為:0×0=0、1×0=0、0×1=0、1×1=1。例如,(1110)2×(1101)2= (10110110)2。
? 除法運算。除法運算也與十進制數對應的運算規則類似,運算規則為:0÷1=0、1÷1=1,而0÷0和1÷0是無意義的。例如,(1101.1)2 ÷ (110)2= (10.01)2。
2. 二進制的邏輯運算
計算機所采用的二進制數1和0可以代表邏輯運算中的“真”與“假”“是”與“否”和“有”與“無”。二進制的邏輯運算包括“與”“或”“非”和“異或”4種,具體介紹如下。
? “與”運算。“與”運算又稱為邏輯乘,通常用符號“×”“∧”或“·”來表示。其運算規則為:0∧0=0、0∧1=0、1∧0=0、1∧1=1。通過上述運算規則可以看出,當兩個參與運算的數中有一個數為0時,其結果也為0,此時是沒有意義的,只有當數中的數值都為1時,結果為1,即只有當所有的條件都符合時,邏輯結果才為肯定值。例如,假定某一個公益組織規定加入成員的條件是女性與慈善家,那么只有既是女性又是慈善家的人才能加入該組織。
? “或”運算。“或”運算又稱為邏輯加,通常用符號“+”或“∨”來表示。其運算法則為:0∨0=0、0∨1=1、1∨0=1、1∨1=1。該運算規則表明,只要有一個數為1,則結果就是1。例如,假定某一個公益組織規定加入成員的條件是女性或慈善家,那么只要符合其中任意一個條件或兩個條件就可以加入該組織。
? “非”運算。“非”運算又稱為邏輯否運算,通常是在邏輯變量上加上畫線來表示,如變量為A,則其非運算結果用表示。其運算規則為:
。例如,假定A變量表示男性,
就表示非男性,即指女性。
? “異或”運算。“異或”運算通常用符號“⊕”表示,其運算規則為:0⊕0=0、0⊕1=1、1⊕0=1、1⊕1=0。該運算規則表明,當邏輯運算中變量的值不同時,結果為1;而變量的值相同時,結果為0。
(四)了解計算機中字符的編碼規則
編碼就是利用計算機中的0和1兩個代碼的不同長度表示不同信息的一種約定方式。由于計算機是以二進制的形式存儲和處理數據的,因此只能識別二進制編碼信息,數字、字母、符號、漢字、語音和圖形等非數值信息都要用特定規則進行二進制編碼才能進入計算機。對于西文與中文字符,由于形式的不同,使用的編碼也不同。
1. 西文字符的編碼
在計算機中對字符進行編碼,通常采用ASCII和Unicode兩種編碼。
? ASCII。美國信息交換標準代碼(American Standard Code for Information Interchange,ASCII)是基于拉丁字母的一套編碼系統,主要用于顯示現代英語和其他西歐語言,它被國際標準化組織指定為國際標準(ISO 646標準)。標準ASCII使用7位二進制數來表示所有的大寫和小寫字母、數字0~9、標點符號,以及在美式英語中使用的特殊控制字符,共有27=128個不同的編碼值,可以表示128個不同字符的編碼,如表1-4所示。低4位編碼b3b2b1b0用作行編碼,而高3位b6b5b4用作列編碼,其中有95個編碼對應計算機鍵盤上的符號和其他可顯示或打印的字符,另外33個編碼被用作控制碼,用于控制計算機某些外部設備的工作特性和某些計算機軟件的運行情況。例如,字母A的編碼為二進制數1000001,對應十進制數65或十六進制數41。
表1-4 標準7位ASCII

? Unicode。Unicode也是一種國際標準編碼,采用兩個字節編碼,能夠表示世界上所有的書寫語言中可能用于計算機通信的文字和其他符號。目前,Unicode在網絡、Windows操作系統和大型軟件中得到應用。
2. 漢字的編碼
在計算機中,漢字信息的傳播和交換必須有統一的編碼才不會造成混亂和差錯。因此,計算機中處理的漢字是指包含在國家或國際組織制定的漢字字符集中的漢字,常用的漢字字符集包括GB2312、GB18030、GBK和CJK等。為了使每個漢字有一個全國統一的代碼,我國頒布了漢字編碼的國家標準,即GB2312-80《信息交換用漢字編碼字符集》基本集,這個字符集是目前國內所有漢字系統的統一標準。
漢字的編碼方式主要有以下4種。
? 輸入碼。輸入碼也稱外碼,是指為了將漢字輸入計算機而設計的代碼,包括音碼、形碼和音形碼等。
? 區位碼。將GB2312字符集放置在一個94行(每一行稱為“區”)、94列(每一列稱為“位”)的方陣中,方陣中的每個漢字所對應的區號和位號組合起來就得到了該漢字的區位碼。區位碼用4位數字編碼,前兩位叫作區碼,后兩位叫作位碼,如漢字“中”的區位碼為5448。
? 國標碼。國標碼采用兩個字節表示一個漢字,將漢字區位碼中的十進制區號和位號分別轉換成十六進制數,再分別加上20H,就可以得到該漢字的國際碼。例如,“中”字的區位碼為5448,區號54對應的十六進制數為36,加上20H,即為56H,而位號48對應的十六進制數為30,加上20H,即為50H,所以“中”字的國標碼為5650H。
? 機內碼。在計算機內部進行存儲與處理所使用的代碼稱為機內碼。對漢字系統來說,漢字機內碼規定在漢字國標碼的基礎上,每字節的最高位置為1,每字節的低7位為漢字信息。將國標碼的兩個字節編碼分別加上80H(即10000000B),便可以得到機內碼,如漢字“中”的機內碼為D6D0H。
- Linux設備驅動開發詳解(第2版)
- Modern Web Testing with TestCafe
- Google系統架構解密:構建安全可靠的系統
- 精解Windows 8
- 混沌工程:復雜系統韌性實現之道
- Linux運維最佳實踐
- AWS Development Essentials
- Application Development in iOS 7
- VMware Horizon View Essentials
- 分布式高可用架構之道
- 鴻蒙操作系統設計原理與架構
- Learning Continuous Integration with Jenkins(Second Edition)
- Ubuntu Linux操作系統實用教程
- CSS揭秘
- Linux內核修煉之道