1. 程式人生 > >【連載】計算機組成原理 --- 第二章資料的表示和運算

【連載】計算機組成原理 --- 第二章資料的表示和運算

本節內容主要分為:

(一):數制與編碼

    1:進位計數制及其相互轉換;真值和機器數

    2:BCD字元與字串校驗碼

(二):定點數的表示和運算

    1:定點數的表示

    有無符號數的表示

    2:定點數的運算

    定點數的移位運算,原碼定點數的加減運算;補碼定點數的加減運算

    定點數的乘除運算,溢位概念和判定方法

(三):浮點數的表示和運算

    1:浮點數的表示

    2:浮點數的加減運算

(四):算術邏輯單元ALU

    1:序列加法器和並行加法器

    2:算術邏輯單元ALU的功能和結構

2.1:數制與編碼

2.1.1 進位計數制及其相互轉換

    可以參考這篇 https://wenku.baidu.com/view/15f3b4826529647d26285205.html

2.1.2真值和機器數

    在計算機中,通常採用數的符號和數值一起編碼的方法來表示資料,常用的有原碼,補碼,反碼錶示法。這種把符號“數字化”的數 稱為機器數。

2.1.3BCD

    二進位制編碼的十進位制數(Binary-Coded Decimal,BCD)通常採用4位二進位制數來表示一位十進位制數中的0~9這10個數碼。但2^4 = 16 - 10= 6, 其有6種狀態為冗餘狀態。

    8421碼:

    8421碼又稱為BCD碼,是十進位制程式碼中最常用的一種。在這種編碼方式中,每一位二值程式碼的“1”都代表一個固

定數值。將每位“1”所代表的二進位制數加起來就可以得到它所代表的十進位制數碼。因為程式碼中從左至右看每一位“1”分別代表數字“8”“4”“2”“1”,故得名8421碼。其中每一位“1”代表的十進位制數稱為這一位的權。因為每位的權都是固定不變的,所以8421碼是恆權碼。

2.1.4字元與字串

計算機內部只能識別和處理二進位制程式碼,所以字元都必須按照一定的規則用一組二進位制編碼來表示。

     在 ASCII 編碼中,一個英文字母字元儲存需要1個位元組。在 GB 2312 編碼或GBK 編碼中,一個漢字字元儲存需要2個位元組。在UTF-8編碼中,一個英文字母字元儲存需要1個位元組,一個漢字字元儲存需要3到4個位元組。

     字串的存放:一種常用的表示法是使用一個字元程式碼的陣列,每個字元佔用一個位元組(如在ASCII程式碼中)或兩個位元組(如在unicode中)。它的長度可以使用一個結束符(一般是NUL,ASCII程式碼是0,在C程式語言中使用這種方法)。

2.1.5奇偶校驗碼

    奇偶校驗位(英語:parity bit)或校驗位元(英語:check bit)是一個表示給定位數的二進位制數中1的個數是奇數還是偶數的二進位制數。奇偶校驗位是最簡單的錯誤檢測碼。

奇偶校驗位有兩種型別:偶校驗位與奇校驗位。

    如果一組給定資料位中1的個數是奇數,那麼偶校驗位就置為1,從而使得1的個數是偶數。如果給定一組資料位中1的個數是偶數,那麼奇校驗位就置為1,使得總的1的個數是奇數。

7位資料
(1的個數)

帶有校驗位的位元組

偶校驗位

奇校驗位

0000000(0)

00000000

00000001

1010001(3)

10100011

10100010

1101001(4)

11010010

11010011

1111111(7)

11111111

11111110

2.2定點數的表示與運算:

2.2.1:定點數的表示

1:機器數的表示方法:

       機器數的表示方法一共有兩種:定點表示法和浮點表示法

定點表示法

定點,就是指小數點的位置保持不變。小數點要麼放在最高位之前,要麼放在最低位之後,前一種就是定點小數的表示方法,後面一種就是定點整數的表示方法。在計算機中,定點數有四種表示方法:原碼、反碼、補碼和移碼。。。

原碼

最高位用來表示符號:0代表正數,1代表負數。剩下的全部用來表示這個數的絕對值。。。

例如: x=-110,則x[原]=1110;x=110,則x[原]=0110
注意:對於原碼錶示方法,0的表示方法有兩種:+0:0000,-0:1000。。。

反碼

我們在原碼的基礎上來理解反碼吧。。。
最高位用來表示符號0代表正數,1代表負數。正數的反碼和原碼的表示方法一樣,負數的反碼是除了符號位之外,其他位全部取反。。。
例如:x=-110,則x[反]=1001;x=110,則x[反]=0110
注意:和原碼錶示方法一樣,0的反碼的表示方法也有兩種:+0:0000,-0:1111。。。

補碼

最高位用來表示符號:0代表正數,1代表負數。正數的補碼和原碼的表示方法一樣,負數的補碼是在反碼的基礎上+1得到的。。。
例如:x=-110,則x[補]=1001;x=110,則x[補]=0111
注意:和原碼以及反碼不一樣的是:0的表示方法只有一種。。。
補充:還有一種求解一個負數的補碼的方法:就是在正數的補碼錶示上,從右到左尋找第一個1,然後將1左邊的數字全部取反。。。

移碼

和上述三種表示方法不一樣:最高位的0代表負數,1代表正數。要得到一個數的移碼也很簡單,知道將它的補碼形式的符號位取反即可。。。
例如:x=-110,則x[移]=0001;x=110,則x[移]=1111
注意:和補碼一樣,0的表示方法也只有一種。。。

浮點表示法

浮點,指小數點的位置會浮動,一般用來表示小數。按照位數的不同,常見的浮點數可以分成兩種,32位的單精度浮點數,64位的雙精度浮點數。當然,在實際的計算機中,還有其他型別的,下面主要對單精度進行談論,雙精度的知識與單精度的類似。。。

單精度

S佔一位,表示正負,0為正,1為負。。。
Exponent佔8位(雙精度浮點數中佔11位),表示指數部分。大小為實際指數的大小加上偏移量127(雙精度的偏移量大小為1203)。。。
Fraction佔23位(雙精度浮點數中佔52位),表示小數部分。需要注意的是,需要先將數字進行規格化,即裝換成1.******的形式。然後,只需要將小數點後面的部分進行儲存就可以了,因為除了零之外的其他數的第一位都是1。。。



下面的例子演示如何將一個真值轉換成浮點數:

2.2.2定點數的運算

    1:定點數的移位運算

    有兩種移位方式,邏輯移位和算數移位。下面以一個8位二進位制數1000 1011為例來探討。

邏輯移位

把1000 1011視為一串二進位制串,不對該串做任何解讀,不管是原碼還是補碼還是別的什麼,只管移位,移丟了就移丟了,多出來的空位一律補0。1000 1011邏輯左移一位成為0001 0110,邏輯右移一位成為0100 0101。

算數移位:

算數移位本質上是為了實現有符號數的快速乘除法。算數移位想要達到的效果是:使得算數左移一位得到的結果是原數乘以2(在最高位沒有溢位的情況下),使得算數右移一位得到的結果是原數除以2(忽略移丟的最低位)。

原碼、反碼、補碼的編碼規則各不相同,在不同的編碼規則下要達到同樣的最終效果,那就必須對10001011這一串數字作出解讀,根據這串數字的編碼規則而採用不同的移位策略。

為了達到上述目的,顯然應該規定“無論左移還是右移,符號位是不應該因移位改變的”。那麼剩下的工作就是看看移位之後空出來的位置應該補0還是應該補1。

先看最簡單的原碼錶示法。若1000 1011B是一個原碼,則它表示的是-11D,算數左移時,符號位為1不變,其餘位000 1011依次左移,最高位的0移丟了(移丟的是0,所以沒有溢位,若此處移丟的是1,則溢位,結果出錯),最低位空出來一位,若最低位補0,則最終結果為1001 0110B,表示-22D,就是將-11乘以2的結果。

(此處的道理可參考王道論壇《2012計算機組成原理 聯考複習指導》2.2節,再看看唐朔飛《計算機組成原理》第二版P235表6.5和6.6,相信一切就很清楚了。)

同樣的道理,以此類推,可總結如下:

有符號數為正數時,原碼、反碼、補碼的空位皆補0,因為它們對於正數的編碼是相同的。

有符號數為負數時

原碼左移、原碼右移得到的空位均補0

反碼左移、反碼右移得到的空位均補1
補碼左移得到的空位補1,補碼右移得到的空位補0

要注意區分正負數,比如整數補碼的右移空位補0,而負數右移空位補1。

參考http://www.cnblogs.com/ybwang/archive/2011/10/26/2225034.html

2.3浮點數表示法

    在電腦科學中,浮點(英語:floating point,縮寫為FP)是一種對於實數的近似值數值表現法,由一個有效數字(即尾數)加上冪數來表示,通常是乘以某個基數的整數次指數得到。以這種表示法表示的數值,稱為浮點數(floating-pointnumber)。利用浮點進行運算,稱為浮點計算,這種運算通常伴隨著因為無法精確表示而進行的近似或舍入。     

1 浮點數的表示
通常,我們可以用下面的格式來表示浮點數

S

P

M

2:浮點數的運算:

其中S是符號設兩個浮點數X=Mx*2Ex ,Y=My*2Ey

實現X±Y要用如下5步完成:
(1)對階操作:小階向大階看齊
(2)進行尾數加減運算
(3)規格化處理:尾數進行運算的結果必須變成規格化的浮點數,對於雙符號位(就是使用00表示正數,11表示負數,01表示上溢位,10表示下溢位)的補碼尾數來說,就必須是001×××…×× 或110×××…××的形式
若不符合上述形式要進行左規或右規處理。
(4)舍入操作:在執行對階或右規操作時常用“0”舍“1”入法將右移出去的尾數數值進行舍入,以確保精度。
(5)判結果的正確性:即檢查階碼是否溢位
若階碼下溢(移碼錶示是00…0),要置結果為機器0;
若階碼上溢(超過了階碼錶示的最大值)置溢位標誌。位,P是階碼,M是尾數。

2.4算術邏輯單元ALU

在計算機中,運算器承擔了執行各種算術和邏輯運算的工作,運算器由算術邏輯單元ALU,累加器,狀態暫存器和通用暫存器等組成。ALU的基本功能包括加減乘除四則運算。與或非異或等邏輯運算,以及移位,求補等操作。

相關推薦

連載計算機組成原理 --- 第二資料表示運算

本節內容主要分為: (一):數制與編碼     1:進位計數制及其相互轉換;真值和機器數     2:BCD碼;字元與字串;校驗碼 (二):定點數的表示和運算     1:定點數的表示     有無

連載計算機組成原理 --- 第四指令系統

本章主要內容: (一)指令格式 1.指令的基本格式 2.定長操作碼指令格式 3.擴充套件操作碼指令格式 (二)指令的定址方式 1.有效地址的概念 2.資料定址和指令定址 3.常見定址方式 (三)CIS

計算機組成原理第二之定點數的原補反碼

1.原碼: 對於0,往往有+0和-0之分,【+0】原=000…0,【-0】原=100…0。 n+1位定點整數原碼的表示範圍:-(2^n-1)~2^n-1 定點小數原碼錶示範圍:-(1-2^(-n))~1-2^(-n) 一個位元組八位,28=256,有256個編碼,但是

總結計算機組成原理

(本文只是自己的學習總結,不一定正確,僅供參考) 文章目錄 計算機組成 相關概念 資料儲存 位元bit/位元組byte/字word 機器字長/儲存字長 儲存器的分類 儲存

專欄 - 計算機組成原理

計算機組成原理 對唐朔飛《計算機組成原理》等書的核心內容的摘錄,濃縮的精華知識,有助於學習或溫習組成原理知識,方便準備考研或準備招聘面試。

計算機組成原理——第二線上測試

1、在定點機中執行算術運算時會產生溢位,其原因是()。C A. 運算過程中最高位產生了進位或借位 B. 參與運算的運算元超出了機器的表示範圍 C. 運算結果的運算元超出了機器的表示範圍 D. 暫存器的位數太少 2、某機器字長32位,其中1位符號位,31位尾數。若用定點整數補碼錶示,則

計算機組成原理計算機組成原理糾錯本

【計算機組成原理】計算機組成原理糾錯本 標籤(空格分隔):【考研糾錯本】 考研計算機組成原理糾錯本 文章目錄 考研計算機組成原理糾錯本 第一輪 1. 計算機發展歷程 2. 計算機系統的層級結構

超詳細計算機組成原理總結及思維導圖

計算機組成 第一章 計算機系統概論 馮諾依曼型計算機特點 1.計算機由運算器,控制器,儲存器,輸入和輸出裝置5部分組成 2.採用儲存程式的方式,程式和資料放在同一個儲存器中,並以二進位制表示。 3.指

網路應用_計算機網路原理第二_自考本科段

概要:計算機網路原理本科段第二章知識點總結 1、網路應用體系結構 識記:網路應用體系結構與分類 (1)網路應用體系結構與分類:計算機網路應用從體系結構角度可分為 客戶/伺服器結構(C/S),純P2P結構(Peer to Peer)、混合結構。   領會:C/S網路應用;

總結計算機網路原理

(本文只是自己的學習總結,不一定正確,僅供參考) 文章目錄 計算機網路基礎 OSI參考模型 實際網路架構 網路介面層 資料鏈路層 網路層 傳輸層 應用層 管理機構

計算機組成原理——第一測試

1、從器件角度看,計算機經歷了四代變化。但從系統結構看,至今絕大多數計算機仍屬於()型計算機。D A. 並行 B. 智慧 C. 實時處理 D. 馮•諾伊曼 2、計算機系統中廣泛採用匯流排將五大部件聯絡起來,使用匯流排結構可以()。C A. 減少資訊傳輸量 B. 減少資訊傳輸線的條數

作業系統第四、五 儲存器管理虛擬儲存器

一、儲存器的層次結構 儲存部件的層次 CPU暫存器 ———————— 快取記憶體:一種比記憶體塊的儲存裝置。將短時間內經常訪問的部分資料從記憶體放到快取記憶體中,減少CPU訪問記憶體的時間,是基於程式區域性性。 ———————— 主存 :儲存程序執行時的程式和資料 磁碟快取:記憶體的一部分,

計算機組成原理---概述及資料表示運算

計算機的發展:電子管(機器語言程式設計)-電晶體(有作業系統的雛形)-中小規模積體電路(有分時系統)-超大規模積體電路(產生了微處理器) 硬體系統和軟體系統共同構成了一個完整的計算機系統,對於某一功能來說,既可以用軟體實現,也可以用硬體實現,則稱軟硬體在邏輯上是等效的。 馮諾依曼計算機特點:

計算機組成原理奇偶校驗海明校驗

例: 資料             奇校驗編碼          偶校驗編碼   01110101      001110101 &nbs

連載研究EasyUI系統—Panel元件(方法事件)

    我們來看一下panel方法和事件。 panel方法。 方法名稱 引數 方法描述 options 無 返回所有屬性。 panel 無 返回整個panel元件物件。 header 無

計算機組成原理第一 計算機系統概論

1.1 計算機系統簡介 1.1.1 計算機的軟硬體概念 計算機組成概覽: 1.1.2 計算機系統的層次結構 物理角度: 程式設計師角度: 系統複雜性管理的方法之一:抽象 區別兩點: 計算

計算機組成原理 第六 中央處理器

一、主要內容: 組成原理知識點彙總與複習 授課:sunnyACT張思鵬(中城投絲路@180科技)       二、學習參考: sunnyACT張思鵬(中城投絲路@180科技)xmind使用參考: 必備工具|三分鐘帶

計算機組成原理第一 馮諾依曼計算機特點

一、主要內容: 組成原理知識點彙總與複習 授課:sunnyACT張思鵬(中城投絲路@180科技)   二、學習參考: sunnyACT張思鵬(中城投絲路@180科技)xmind使用參考: 必備工具|三分鐘帶你認識神祕的思維導圖【10分鐘掌

計算機組成原理第5 中央處理器

5.1.1 CPU的功能 程式是一個指令序列,這個序列明確告訴計算機應該執行什麼操作,在什麼地方找到用來操作的資料。 一旦程式進入記憶體儲器,就可以由計算部件來自動完成取指令和執行指令,而CPU就是執行這樣的功能。 CPU的四大基本功能: 指令控制、操作

Python之路第二計算機組成

時鐘頻率 space font 存儲 bit 硬件組成 第二篇 時鐘 速度慢 硬件組成:輸入單元、輸出單元、中央處理單元、存儲單元 南橋:I/O操作 北橋:CPU操作 0/1的單位稱為bit(位) bit是計算機中能識別的最小單位。 字節是計算機中最小的存儲單位。 8b