第二章運算方法和運算器教案

2021-03-04 09:23:39 字數 5268 閱讀 9729

學習重點

● 資料與文字的表示

● 定點加法、減法運算

● 定點運算器的組成

● 浮點運算的步驟

2.1 資料與文字的表示方法

2.1.1 資料格式

計算機中使用的資料可分成兩大類:

數值資料:數字資料的表示

(定點、浮點)

符號資料:非數字符號的表示

(ascii、漢字、圖形等)

數值資料的表示格式有定點數、浮點數兩種

1.定點數的表示方法

小數點的位置固定不變,通常表示成純小數或純整數。

用n+1位字表示定點數 x,

x= xnxn-1xn-2…x1x0

純小數時表示範圍:

0≤|x|≤1-2-n

純整數時表示範圍:

0≤|x|≤2n-1

2.浮點數的表示方法

任意進製數n表示:n=re·m

m為尾數,數的精度;

e為指數(整數),數的範圍;

r為基數,二進位制為2,十進位制為10;

浮點數由階碼、尾數及其符號位組成。

規格化:若不對浮點數的表示作出明確規定,同乙個浮點數的表示就不是惟一的。例如:

0.01010010×211

0.001010010×2100

0.1010010×210

ieee754標準

(規定了浮點數的表示格式,運算規則等)

規則規定了32位和64位兩種基本格式

規則中,尾數用原碼,指數用移碼(便於對階和比較),基數為2

尾數域的最高有效位為1,稱為浮點數的規格化表示。

32位的浮點數

s數的符號位,1位,在最高位,「0」表示正數,「1」表示負數。

e是階碼,8位,採用移碼表示。移碼比較大小方便。

m是尾數,23位,在低位部分,採用純小數表示。

規格化的浮點數尾數域最左位(最高有效位)總是1, 故這一位經常不予儲存,而認為隱藏在小數點的左邊(1.m) 。

採用這種方式時,將浮點數的指數真值e變成階碼e時,應將指數e加上乙個固定的偏移值127(01111111),即e=e+127。

乙個規格化的32位浮點數x的真值表示為

x=(-1)s×(1.m)×2e-127

設e=e-127

x=(-1)s×(1.m)×2e

[例1]若浮點數x的754標準儲存格式為(41360000)16,求其浮點數的十進位制數值。

解:將16進製制數展開後,可得二制數格式為

0 10000010 011 0110 0000 0000 0000 0000

s 階碼(8位尾數(23位)

指數e=階碼e-127=10000010-01111111

=00000011=(3)10

包括隱藏位1的尾數

m=1.011 0110 0000 0000 0000 0000=1.011011

於是有x=(-1)s×1.m×2e

=+(1.011011)×23

=+1011.011=(11.375)10

[例2]將數(20.59375)10轉換成754標準的32位浮點數的二進位制儲存格式。

解:首先分別將整數和小數部分轉換成二進位制數:

20.59375=10100.10011

然後移動小數點,使其在第1,2位之間

10100.10011=1.010010011×24

e=4於是得到: e=e+127=4+127=131

s=0, e=131=10000011, m=010010011

最後得到32位浮點數的二進位制儲存格式為:

01000001101001001100000000000000=(41a4c000)16

真值x為零表示:當階碼e為全0且尾數m也為全0時的值,結合符號位s為0或1,有正零和負零之分。

真值x為無窮大表示:當階碼e為全1且尾數m為全0時,結合符號位s為0或1,也有+∞和-∞之分。

這樣在32位浮點數表示中,要除去e用全0和全1(255)表示零和無窮大的特殊情況,對於規格化浮點數,e的範圍變為1到254,因為e=e+127,所以真正的指數值e則為-126到+127。因此32位浮點數表示的絕對值的範圍是10-38~1038(以10的冪表示)。

64位的浮點數中符號位1位,階碼域11位,尾數域52位,指數偏移值是1023。因此規格化的64位浮點數x的真值為:

x=(-1)s×(1.m)×2e-1023

e=e-1023

浮點數所表示的範圍遠比定點數大。一台計算機中究竟採用定點表示還是浮點表示,要根據計算機的使用條件來確定。

一般在高檔微機以上的計算機中同時採用定點、浮點表示,由使用者進行選擇。而微控制器中多採用定點表示。

機器碼:機器中表示的數, 要解決在計算機內部數的正、負符號和小數點運算問題。

原碼、反碼、補碼、移碼

[例7]將十進位制真值(-127,-1,0,+1,+127)列表表示成二進位制數及原碼、反碼、補碼、移碼值。

[例8]設機器字長16位,定點表示,尾數15位,數符1位,問:(1)定點原碼整數表示時,最大正數是多少?最小負數是多少?

(2)定點原碼小數表示時,最大正數是多少?最小負數是多少?

定點原碼整數表示

最大正數值=(215-1)10=(+32767)10

最小負數值=-(215-1)10=(-32767)10

定點原碼小數表示

最大正數值=(1-2-15)10

=(+0.111...11)2

最小負數值=-(1-2-15)10

=(-0.111..11)2

數字編碼輸入的優點是無重碼,且輸入碼與內部編碼的轉換比較方便,缺點是**難以記憶。拼音碼是以漢字拼音為基礎的輸入方法。使用簡單方便,但漢字同音字太多,輸入重位元速率很高,同音字選擇影響了輸入速度。

為了加快輸入速度,在上述方法基礎上,發展了片語輸入、聯想輸入等多種快速輸入方法。更理想的輸入方式是利用語音或圖象識別技術「自動」將拼音或文字輸入到計算機內,並將其自動轉換為機內**表示。

目前這種理想已經成為現實,如語音輸入、手寫輸入、ocr等。

漢字內碼

漢字內碼是用於漢字資訊的儲存、交換、檢索等操作的機內**,一般採用兩個位元組表示。漢字機內**中兩個位元組的最高位均規定為「1」。

(一級漢字3755個,二級漢字3008個)

注意:有些系統中位元組的最高位用於奇偶校驗,此情況下用三個位元組表示漢字內碼。

2.1.5 校驗碼

校驗碼(只介紹奇偶校驗碼)

引入:資訊傳輸和處理過程中受到干擾和故障,容易出錯。

解決方法:是在有效資訊中加入一些冗餘資訊(校驗位)

奇偶校驗位定義

缺點其它校驗方法還有hamming,crc

2.2定點加法、減法運算

2.2.1 補碼加減法

補碼加法

公式:[x+y]補=[x]補+[y]補

補碼減法

公式:[x-y]補=[x]補+[-y]補

該公式將減法轉變為加法

如何求[-y]補?

y=0.0111 [y]補=0.0111

[-y]補=1.1001

例: x=-0.1011,y=0.0111,求x+y=?

解: [x]補=1.0101 [y]補=0.0111

[x+y]補=[x]補+[y]補

=1.0101+0.0111=1.1100

x+y=-0.0100

例: x=0.11011,y=-0.11111,求x-y=?

解: [x]補=0.11011 [y]補=1.00001

[-y]補=0.11111

[x-y]補=[x]補+[-y]補=1.11010

課堂練習

例: x=+0.1011, y=+0.1001,求[x+y]補=?

例: x=-0.1101,y=-0.1011,求[x+y ]補=?

2.2.2 溢位的檢測

可能產生溢位的情況

兩正數加,變負數,上溢

(大於機器所能表示的最大數)

兩負數加,變正數,下溢

(小於機器所能表示的最小數)

雙符號位法(參與加減運算的數採用變形補碼表示)

sf1 sf2

0 0 正確(正數)

0 1 上溢

1 0 下溢

1 1 正確(負數)

sf1和sf2相同表示正確的符號,邏輯表示式為v=sf1⊕sf2,可以用異或門來實現

單符號位法

cf c0

0 0 正確

0 1 上溢

1 0 下溢

1 1 正確

v=cf⊕c0 其中cf為符號位產生的進製,c0為最高有效位產生

檢驗舉例:

x=+0.1100, y=+0.1000,求x+y

x=-0.1100, y=-0.1000,求x+y

結果出現了01或10的情況就為溢位

2.2.3基本的加法和減法器

基本的加法和減法器

全加器半加器

全加器考慮低位進製ci和向高位的進製ci+1

半加器不考慮低位進製

圖2.3 行波進製的補碼加法/減法器

2.3 定點乘法運算

乘法實現方法

● 在現有的加法和減法器的基礎上增加適當的線路及控制邏輯可以實現

● 用lsi和vlsi工藝實現專用的乘法器

lsi (large-scale integration大規模積體電路)

● 編制子程式(微控制器等低端機器)

2.3.1 原碼並行乘法

人工演算法與機器演算法的同異性

由加法器完成乘法運算需要如下改進

n位乘n位積可能為2n位.

乘積的最後是所有部分積之和,有n個數相加,而fa只有兩個輸入端

方法一:硬體實現方法(序列的「加法和移位」),硬體結構簡單,速度太慢(已經淘汰).

方法二:不帶符號位的陣列乘法器

要實現n位×n位時,需要n(n-1)個全加器和n2個「與」門。

圖2.4 m×n位不帶符號的陣列乘法器邏輯圖

帶符號位的陣列乘法器

計算機中定點數通常用補碼表示,而前面介紹的不帶符號陣列乘法器是用原碼計算乘法的,為了能進行補碼乘法,需要在計算乘法之前和之後增加求補電路。

原理:算前求補→乘法器→算後求補

求補電路工作特點

e=0時,輸入和輸出相等

e=1時,則從數最右端往左邊掃瞄,直到第乙個1的時候,該位和右邊各位保持不變0⊕a=a,左邊各數值位按位取反1⊕a=a

[例17] 設x=+15,y=-13,用帶求補器的原碼陣列乘法器求出乘積x·y=?

[解:]

設最高位為符號位,則輸入資料為

實驗二運算器實驗

南京工程學院 計算機工程學院 計算機組成與結構實驗報告書 實驗學生班級 k網路工程121 實驗學生姓名王雲峰 學號 240121525 實驗地點資訊樓a115 同組同學李翔240121515 合作小組朱賽傑240121533 實驗日期 11月27日 實驗儀器號 一 實驗目的 1 加深對am2901運...

第二章矩陣及其運算總結

1 矩陣及其運算 一 矩陣的基本概念 必考 矩陣,是由m n 個數組成的乙個m行n列的矩形 通常用大寫字母表示,組成矩陣的每乙個數,均稱為矩陣的元素,通常用小寫字母其元素表示,其中下標都是正整數,他們表示該元素在矩陣中的位置.比如,或表示乙個m n 矩陣,下標ij 表示元素位於該矩陣的第行 第列.元...

第二章矩陣及其運算 考研

1 已知線性變換 求從變數到變數的線性變換 解由已知 故 2 已知兩個線性變換 求從到的線性變換 解由已知 所以有3 設,求解 4 計算下列乘積 1 2 3 4 5 6 解 1 2 3 4 5 6 5 設,問 1 嗎?2 嗎?3 嗎?解 1 則 2 但故 3 而 故6 舉反列說明下列命題是錯誤的 若...