計(jì)算機(jī)組成原理 課件 2 運(yùn)算方法和運(yùn)算部件_第1頁
計(jì)算機(jī)組成原理 課件 2 運(yùn)算方法和運(yùn)算部件_第2頁
計(jì)算機(jī)組成原理 課件 2 運(yùn)算方法和運(yùn)算部件_第3頁
計(jì)算機(jī)組成原理 課件 2 運(yùn)算方法和運(yùn)算部件_第4頁
計(jì)算機(jī)組成原理 課件 2 運(yùn)算方法和運(yùn)算部件_第5頁
已閱讀5頁,還剩151頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

計(jì)算機(jī)組成原理計(jì)算機(jī)學(xué)院運(yùn)算方法和運(yùn)算部件22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算2.6計(jì)算機(jī)中浮點(diǎn)數(shù)的表示與運(yùn)算2.7C語言中常用數(shù)據(jù)類型轉(zhuǎn)換2.8運(yùn)算器主要學(xué)習(xí)目標(biāo)(1)熟練掌握常用計(jì)數(shù)制及其相互轉(zhuǎn)換,以及數(shù)值型數(shù)據(jù)表示方法;(2)自行了解計(jì)算機(jī)中編碼及其他信息表示方法;(3)掌握常用數(shù)據(jù)校驗(yàn)碼中的奇偶校驗(yàn)碼;(4)理解算術(shù)邏輯運(yùn)算基礎(chǔ);(5)掌握定點(diǎn)數(shù)的加法、減法和乘法運(yùn)算;了解除法運(yùn)算;(6)掌握浮點(diǎn)數(shù)的加法和減法運(yùn)算;了解乘除法運(yùn)算;(7)理解C語言中常用數(shù)據(jù)類型轉(zhuǎn)換,以及快速進(jìn)位鏈;

重點(diǎn)/難點(diǎn):二進(jìn)制換算和表示;機(jī)器數(shù)的表示及原碼反碼補(bǔ)碼移碼的相互轉(zhuǎn)換;定點(diǎn)數(shù)的加法和乘法運(yùn)算,浮點(diǎn)數(shù)的加法運(yùn)算。2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的數(shù)據(jù)存儲單位位(bit):最小存儲單位,小寫b,二進(jìn)制數(shù)中的一個數(shù)位,其值為“0”或“1”字節(jié)(Byte):基本存儲單元,大寫B(tài),1Byte=8bit字(Word):一次存取、加工和傳送的數(shù)據(jù)長度。一個字由一個或多個(一般是字節(jié)的整數(shù)位)字節(jié)構(gòu)成,如64位計(jì)算機(jī)中,1字=64位=8字節(jié)2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的常見進(jìn)制進(jìn)位計(jì)數(shù)制:即位值計(jì)數(shù)制。用少量的數(shù)字符號(也稱數(shù)碼),按先后次序把它們排成數(shù)位,由低到高進(jìn)行計(jì)數(shù),計(jì)滿進(jìn)位基數(shù):進(jìn)位制的基本特征數(shù),即所用到的數(shù)字符號個數(shù)

例如十進(jìn)制:以0~9十個數(shù)碼表示,基數(shù)為10位權(quán):進(jìn)位制中,處于某一位上的“1”所表示的數(shù)值的大小為該位的權(quán)。各種進(jìn)位計(jì)數(shù)制中的權(quán)值恰好是基數(shù)的某次冪按權(quán)展開式:任意一個R進(jìn)制數(shù)都可寫成各數(shù)位上的數(shù)碼與其對應(yīng)權(quán)值的乘積之和常見進(jìn)位制:2,8,10,16進(jìn)制馮?諾依曼體系結(jié)構(gòu)的基本特征之一2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的常見進(jìn)制十進(jìn)制(Decimal)數(shù)碼為:0~9;基數(shù)是10運(yùn)算規(guī)律:逢十進(jìn)一,即:9+1=10102、101、100、10-1、10-2稱為十進(jìn)制的權(quán)。各數(shù)位的權(quán)是10的冪。同樣的數(shù)碼在不同的數(shù)位上代表的數(shù)值不同數(shù)碼123.05位權(quán)102101100

10-110-22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的常見進(jìn)制二進(jìn)制(Binary)數(shù)碼為:0和1;基數(shù)是2運(yùn)算規(guī)律:逢二進(jìn)一,即:1+1=10數(shù)碼111.01位權(quán)222120

2-12-2加法規(guī)則:0+0=0,0+1=1+0=1,1+1=10乘法規(guī)則:0?0=0,0?1=1?0=0,1?1=1運(yùn)算規(guī)則二進(jìn)制數(shù)只有0和1兩個數(shù)碼,它的每一位都可以用電子元件來實(shí)現(xiàn),且運(yùn)算規(guī)則簡單,相應(yīng)的運(yùn)算電路也容易實(shí)現(xiàn)。,,以此類推

其性質(zhì)與十進(jìn)制相似1)移位性質(zhì)左移(小數(shù)點(diǎn)右移)一位,數(shù)值擴(kuò)大一倍右移(小數(shù)點(diǎn)左移)一位,數(shù)值減小一半2)奇偶性質(zhì)最低位為0,偶數(shù)最低位為1,奇數(shù)1.1=20+2-1=1.511=21+20=2(20+2-1)=30.110.75=2-1(20+2-1)=2-1+2-2=2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的常見進(jìn)制二進(jìn)制(Binary)此處的左移和右移均指數(shù)據(jù)本身相對于小數(shù)點(diǎn)的移動2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的常見進(jìn)制八進(jìn)制(Octal)數(shù)碼為:0~7;基數(shù)是8運(yùn)算規(guī)律:逢八進(jìn)一,即:7+1=10數(shù)碼176.14位權(quán)828180

8-18-2,,以此類推

2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的常見進(jìn)制十六進(jìn)制(Hexadecimal)數(shù)碼為:0~9和A~F;基數(shù)是16運(yùn)算規(guī)律:逢十六進(jìn)一,即:F+1=10數(shù)碼AD3.18位權(quán)162161160

16-116-2,,以此類推

2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換十進(jìn)制與二、八、十六進(jìn)制之間的對應(yīng)關(guān)系進(jìn)制對應(yīng)關(guān)系十進(jìn)制0123456789101112131415二進(jìn)制01101110010111011110001001101010111100110111101111八進(jìn)制012345671011121314151617十六進(jìn)制0123456789ABCDEF1位八進(jìn)制可以表示成3位二進(jìn)制,1位十六進(jìn)制可以表示成4位二進(jìn)制2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換1.二、八、十六進(jìn)制數(shù)轉(zhuǎn)換十進(jìn)制數(shù)(455.54)O

最簡便的就是按權(quán)展開求和法R進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)的規(guī)律是相同的【例2.1】二轉(zhuǎn)十=(13.6875)D(1101.1011)B=1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3+1×2-4【例2.2】八轉(zhuǎn)十=4×82+5×81+5×80+5×8-1+4×8-2=(301.6875)D

=256+40+5+0.625+0.0625【例2.3】十六轉(zhuǎn)十(12D.A)H=1×162+2×161+13×160+10×16-1思考:由n個1組成的二進(jìn)制數(shù)對應(yīng)的十進(jìn)制數(shù)寫成代數(shù)式是?2n

-1=(301.625)D2.十進(jìn)制數(shù)轉(zhuǎn)換二、八、十六進(jìn)制數(shù)2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換1)輾轉(zhuǎn)除乘法:將整數(shù)與小數(shù)兩部分分別轉(zhuǎn)換,然后將結(jié)果用小數(shù)點(diǎn)連接起來整數(shù)部分的轉(zhuǎn)換:除2(8,16)取余法(基數(shù)除法:除基倒取余)小數(shù)部分的轉(zhuǎn)換:乘2(8,16)取整法(基數(shù)乘法:乘基順取整)2)減權(quán)定位法:又叫試減法將要轉(zhuǎn)換的十進(jìn)制數(shù)依次與其自身所包含的二進(jìn)制的最高位權(quán)值進(jìn)行比較若夠減,則對應(yīng)位為1,減去該權(quán)值后再往下比較若不夠減,對應(yīng)位為0,繼續(xù)往下比較重復(fù)操作直至差為01)輾轉(zhuǎn)除乘法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換重復(fù)除以2得商取余數(shù)排序123÷2611最低位61÷2301

30÷2150

15÷271

7÷231

3÷211

1÷201最高位重復(fù)乘以2乘積乘積小數(shù)部分乘積整數(shù)部分排序0.6875

21.37500.37501最高位0.3750

20.75000.75000

0.7500

21.50000.50001

0.5000

21.00000.00001最低位【例2.4】將十進(jìn)制數(shù)123.6875轉(zhuǎn)換為二進(jìn)制數(shù)(123.6875)10=(1111011.1011)21)輾轉(zhuǎn)除乘法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換重復(fù)除以8得商取余數(shù)排序25÷831最低位3÷803最高位重復(fù)乘以8乘積乘積小數(shù)部分乘積整數(shù)部分排序0.55

84.40.44最高位0.4

83.20.23

0.2

81.60.61最低位【例2.5】將十進(jìn)制數(shù)25.55轉(zhuǎn)換為八進(jìn)制數(shù)(保留小數(shù)點(diǎn)后3位)(25.55)10≈(31.431)81)輾轉(zhuǎn)除乘法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換重復(fù)除以16得商取余數(shù)排序31÷16115→F最低位1÷1601最高位重復(fù)乘以16乘積乘積小數(shù)部分乘積整數(shù)部分排序0.5

168.00.08/【例2.6】將十進(jìn)制數(shù)31.5轉(zhuǎn)換為十六進(jìn)制數(shù)(31.5)10=(1F.8)161)輾轉(zhuǎn)除乘法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換重復(fù)乘以2乘積乘積小數(shù)部分乘積整數(shù)部分排序0.6

21.20.21最高位0.2

20.40.40

0.4

20.80.80最低位【例2.7】將十進(jìn)制數(shù)0.6分別轉(zhuǎn)換為二、八、十六進(jìn)制數(shù)(保留小數(shù)點(diǎn)后3位)(0.6)10≈(0.100)2≈(0.463)8≈(0.999)16重復(fù)乘以8乘積乘積小數(shù)部分乘積整數(shù)部分排序0.6

84.80.84最高位0.8

86.40.46

0.4

83.20.23最低位重復(fù)乘以16乘積乘積小數(shù)部分乘積整數(shù)部分排序0.6

169.60.69最高位0.6

169.60.69

0.6

169.60.69最低位任何十進(jìn)制整數(shù)都能精確地轉(zhuǎn)換成R進(jìn)制數(shù);某些十進(jìn)制小數(shù)不能精確地轉(zhuǎn)換成R進(jìn)制數(shù)。2)減權(quán)定位法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換【例2.8】將十進(jìn)制數(shù)5148轉(zhuǎn)換成二進(jìn)制數(shù)未到20位置,差就為0時,剩余數(shù)位全部補(bǔ)03.二、八、十六進(jìn)制之間的相互轉(zhuǎn)換2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換1)按位合并法:適用于二進(jìn)制轉(zhuǎn)換成八進(jìn)制或十六進(jìn)制以小數(shù)點(diǎn)為中心,小數(shù)點(diǎn)前面自右向左,小數(shù)點(diǎn)后面自左向右,分別向兩端每3位(4位)劃分為一組,不足3位(4位)時分別在兩端執(zhí)行“補(bǔ)0”操作,補(bǔ)足3位(4位),再就分組后的情況寫出各組對應(yīng)的八(十六)進(jìn)制數(shù)碼即可。2)按位拆分法:適用于八進(jìn)制或十六進(jìn)制轉(zhuǎn)換成二進(jìn)制將八(十六)進(jìn)制的每一位數(shù)碼拆分成3位(4位)二進(jìn)制數(shù)碼即可,如果有要求,還可對結(jié)果的兩端執(zhí)行“去0”操作。1)按位合并法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換【例2.9】將二進(jìn)制數(shù)(1100011100101.1011)2轉(zhuǎn)換成八進(jìn)制數(shù)和十六進(jìn)制數(shù)解:(1100011100101.1011)2=001

100

011

100

101.101

100=(14345.54)8(1100011100101.1011)2=0001

1000

1110

0101.1011=(18E5.B)162)按位拆分法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換【例2.10】將八進(jìn)制數(shù)(5372.764)8轉(zhuǎn)換成二進(jìn)制數(shù)解:(5372.764)8=(101

011

111

010.111

110

100)2“去0”后,

(5372.764)8=(101

011

111

010.111

110

1)22)按位拆分法2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換【例2.11】將十六進(jìn)制數(shù)(3FD.08)16轉(zhuǎn)換成二進(jìn)制數(shù)解:(3FD.08)16=(0011

1111

1101.0000

1000)2“去0”后,

(3FD.08)16=(11

1111

1101.0000

1)22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換常見進(jìn)制的相互轉(zhuǎn)換方法歸納

目標(biāo)進(jìn)制源進(jìn)制二進(jìn)制八進(jìn)制十進(jìn)制十六進(jìn)制二進(jìn)制/按位合并法:3位并1位,不足補(bǔ)0按權(quán)展開求和法按位合并法:4位并1位,不足補(bǔ)0八進(jìn)制按位拆分法:1位拆3位/按權(quán)展開求和法先轉(zhuǎn)換成二進(jìn)制,再轉(zhuǎn)十六進(jìn)制十進(jìn)制①輾轉(zhuǎn)除乘法:整數(shù)除2倒取余,小數(shù)乘2順取整②減權(quán)定位法③先轉(zhuǎn)十六進(jìn)制或八進(jìn)制,再按位拆分輾轉(zhuǎn)除乘法:整數(shù)除8倒取余,小數(shù)乘8順取整/輾轉(zhuǎn)除乘法:整數(shù)除16倒取余,小數(shù)乘16順取整(≥10的余數(shù)或整數(shù),要轉(zhuǎn)換成對應(yīng)的十六進(jìn)制數(shù)碼)十六進(jìn)制按位拆分法:1位拆4位先轉(zhuǎn)換成二進(jìn)制,再轉(zhuǎn)八進(jìn)制按權(quán)展開求和法/2.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換數(shù)據(jù)存儲單位常見進(jìn)制進(jìn)制轉(zhuǎn)換位、字節(jié)、字十進(jìn)制D、二進(jìn)制B、八進(jìn)制O、十六進(jìn)制H二、八、十六進(jìn)制數(shù)轉(zhuǎn)換十進(jìn)制數(shù):按權(quán)展開求和法十進(jìn)制數(shù)轉(zhuǎn)換二、八、十六進(jìn)制數(shù):輾轉(zhuǎn)除乘法,減權(quán)定位法二、八、十六進(jìn)制之間的相互轉(zhuǎn)換:按位合并/拆分法運(yùn)算方法和運(yùn)算部件22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算2.6計(jì)算機(jī)中浮點(diǎn)數(shù)的表示與運(yùn)算2.7C語言中常用數(shù)據(jù)類型轉(zhuǎn)換2.8運(yùn)算器2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法定義特點(diǎn)舉例機(jī)器數(shù)與真值的轉(zhuǎn)換不同機(jī)器數(shù)形式之間的轉(zhuǎn)化機(jī)器數(shù)表示的范圍與其字長有關(guān)無符號數(shù)有符號數(shù)真值機(jī)器數(shù)原碼表示法補(bǔ)碼表示法反碼表示法移碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法無符號數(shù)寄存器的位數(shù)反映無符號數(shù)的表示范圍8位0~28-1(255)有符號數(shù)補(bǔ)碼-128~+12716位0~216-1(65535)有符號數(shù)補(bǔ)碼-32768~+32767n位寄存器,無符號數(shù)表示范圍為0~2n-1沒有正、負(fù)符號的數(shù)2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法有符號數(shù)帶+、-符號的數(shù)符號數(shù)字化的數(shù)+0.10110

1011小數(shù)點(diǎn)的位置+11000

1100小數(shù)點(diǎn)的位置–11001

1100小數(shù)點(diǎn)的位置–0.10111

1011小數(shù)點(diǎn)的位置真值機(jī)器數(shù)原碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法1)整數(shù)定義x

為真值n

為整數(shù)的位數(shù)(不包括符號位的數(shù)據(jù)位數(shù))如x=+1110[x]原

=0,1110[x]原

=24+1110=1

,1110x=

1110[x]原=0,x2n

x

≥02n

x0≥

x

>2n用逗號

將符號位和數(shù)值部分隔開最大正數(shù)0,11…1,即2n-1,因而是小于2n0有兩種表示方式

最小負(fù)數(shù)1,11…1,即-(2n-1),因而是大于-2n若字長是n+1,原碼整數(shù)的表示范圍為-(2n-1)≤x≤2n-12n+|x|帶數(shù)字化符號的絕對值表示2)小數(shù)定義原碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法x

為真值如x=+0.1101[x]原

=0.1101x=0.1101[x]原

=1(0.1101)=1.1101

0.x1>

x

≥0[x]原=1–x0≥

x

>-1用小數(shù)點(diǎn)

將符號位和數(shù)值部分隔開若字長是n+1,原碼小數(shù)的表示范圍為-(1-2-n)≤x≤1-2-n1+|x|最大正數(shù)0.11…1,即1-2-n,因而是小于10有兩種表示方式

最小負(fù)數(shù)1.11…1,即

-(1-2-n),因而是大于-1原碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法【例2.12】求x=±0的原碼解:設(shè)x=+0.0000【例如】已知[x]原=1.1101求x解:∴x=-0.1101同理,對于整數(shù)[+0]原=0,0000[+0.0000]原=0.0000x=0.0000[0.0000]原=1.0000[0]原=1,0000∴[+0]原≠[0]原

根據(jù)定義∵[x]原=1.1101原碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法原碼的特點(diǎn):簡單、直觀但是用原碼作加法時,會出現(xiàn)如下問題:能否只作加法?

找到一個與負(fù)數(shù)等價的正數(shù)來代替這個負(fù)數(shù)就可使減加加法正正加加法正負(fù)加法負(fù)正加法負(fù)負(fù)減減加要求數(shù)1數(shù)2實(shí)際操作結(jié)果符號正可正可負(fù)可正可負(fù)負(fù)補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法-1231)補(bǔ)的概念時鐘逆時針-363順時針可見3可用+9代替記作3≡+9(mod12)同理4≡+8(mod12)5≡+7(mod12)減法加法稱+9是3以12為模的補(bǔ)數(shù)+9615

時鐘以

12為模補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法一個負(fù)數(shù)加上“?!奔吹迷撠?fù)數(shù)的補(bǔ)數(shù)一個正數(shù)和一個負(fù)數(shù)互為補(bǔ)數(shù)時,它們絕對值之和即為模

數(shù)計(jì)數(shù)器(模16)–101110110000+010110111000010110000?可見1011可用+0101代替同理0110.1001自然去掉(mod23)≡+101(mod2)≡+1.0111補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法正數(shù)的補(bǔ)數(shù)即為其本身+

0101(mod24)≡1011(mod24)+10000+10000兩個互為補(bǔ)數(shù)的數(shù)+0101+10101≡分別加上模結(jié)果仍互為補(bǔ)數(shù)∴+0101≡+0101+010124+1

–10111,0101丟掉10110

,1

,??1011(mod24)可見?+01010101010110110101+(mod24+1)100000=24+1

+

010110,0101+0101100000=丟掉補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2)整數(shù)定義x

為真值n

為整數(shù)的位數(shù)(不包括符號位)[x]補(bǔ)=0,x2n

x

≥02n+1+x0

x

≥-2n(mod2n+1)如x=+1010[x]補(bǔ)=27+1+(1011000)=[x]補(bǔ)=0,1010x=10110001,0101000用逗號

將符號位和數(shù)值部分隔開1011000100000000若字長是n+1,補(bǔ)碼整數(shù)的表示范圍為-2n≤x≤2n-1(比原碼多表示-2n)最大正數(shù)0,11…1,即2n-1,因而是小于2n0有唯一表示方式,此處可用等號

最小負(fù)數(shù)1,00…0,即-2n,因而也可以是等于-2n補(bǔ)碼中+0和-0的表示一致,原本在原碼中用于表示-0的位置就給了負(fù)數(shù),因此補(bǔ)碼的負(fù)數(shù)就比原碼多一個。以8位二進(jìn)制為例:把(1,0000000)補(bǔ)換算成真值=數(shù)值位取反末位+1=-10000000

=-1282n+1-|x|補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法3)小數(shù)定義x

為真值x=+0.1110[x]補(bǔ)=0.x1>

x

≥02+

x

0>

x

≥-1(mod2)如[x]補(bǔ)=0.1110x=0.11000001.0100000[x]補(bǔ)=2

+

(0.1100000)=用小數(shù)點(diǎn)

將符號位和數(shù)值部分隔開0.110000010.0000000若字長是n+1,補(bǔ)碼小數(shù)的表示范圍為-1≤x≤1-2-n(比原碼多表示-1)最大正數(shù)0.11…1,即1-2-n,因而是小于10有唯一表示方式,此處可用等號

最小負(fù)數(shù)1.00…0,即-1,因而也可以是等于-1若真值為純小數(shù),它的補(bǔ)碼形式為Xs.X1X2…Xn,其中Xs表示符號位。當(dāng)Xs=1,X1~Xn均等于0時,X為最小負(fù)數(shù)(絕對值最大的負(fù)數(shù)),其真值等于-1。如把(1.0000)補(bǔ)換算成真值=數(shù)值位取反末位+1=-1。2-|x|補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法【例2.13】當(dāng)x=±1001時,求[x]補(bǔ)

解:補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法4)求補(bǔ)碼的快捷方式=100000=1,011010101+1=1,0110又[x]原=1,1010

[x]補(bǔ)=24+11010=11111+11010=1111110101010當(dāng)真值為負(fù)時,補(bǔ)碼可用原碼除符號位外,每位取反,末位加1求得+1

反碼解:補(bǔ)碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法4)求補(bǔ)碼的快捷方式【更快捷的方式】當(dāng)原碼為負(fù)時,找到數(shù)值位的最后一個“1”,將其連同右邊的“0”照抄,左邊的各數(shù)值位按位取反,符號位不變【上例】[x]原=1,1010[x]補(bǔ)=1,0110【又如】[x]原=1.100010[x]補(bǔ)=1,011110以上兩例僅蘭色下劃線位置取反即可該快捷方式同樣適用于負(fù)數(shù)補(bǔ)碼轉(zhuǎn)換原碼,更加簡便了由機(jī)器數(shù)求真值的過程真值0,10001101,01110100.11101.00100.00000.00001.00000,10001101,10001100.11101.11100.00001.0000不能表示練習(xí)求下列真值的補(bǔ)碼和原碼[1]補(bǔ)

=2+x=10.00001.0000=1.0000[+0]補(bǔ)=[0]補(bǔ)由補(bǔ)碼小數(shù)定義=1000110[x]補(bǔ)[x]原x=+70x=0.1110x=0.0000x=70x=0.1110x=0.0000x=1.0000=1000110[x]補(bǔ)=x

1>

x

≥02+

x0>

x

≥1(mod2)2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法反碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法1)整數(shù)定義[x]反=0,x2n>x≥0(2n+1–1)+x0≥x>2n(mod2n+1

1)如x

=+1101[x]反=0,1101=1,0010x=1101[x]反=(24+11)1101=111111101用逗號

將符號位和數(shù)值部分隔開x

為真值n

為整數(shù)的位數(shù)(不包括符號位)若字長是n+1,反碼整數(shù)的表示范圍為-(2n-1)≤x≤2n-1最大正數(shù)0,11…1,即2n-1,因而是小于2n0有兩種表示方式最小負(fù)數(shù)1,00…0,即

-(2n-1),因而大于-2n反碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2)小數(shù)定義x

=+0.1101[x]反=

0.1101x=0.1010[x]反=(22-4)

0.1010=1.1111

0.1010=1.0101如[x]反=0.x1>x≥0(2–2-n)+x0≥x>1(mod22-n)用小數(shù)點(diǎn)

將符號位和數(shù)值部分隔開x

為真值n為小數(shù)的位數(shù)(不包括符號位)若字長是n+1,反碼小數(shù)的表示范圍為-(1-2-n)≤x≤1-2-n最大正數(shù)0.11…1,即1-2-n,因而是小于10有兩種表示方式最小負(fù)數(shù)1.00…0,即-(1-2-n),因而大于-1反碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法已知x3=0求[x3]反

設(shè)x3=+0.0000[+0.0000]反=0.0000解:同理,對于整數(shù)[+0]反=0,0000

已知x2=1,1011求[x2]反

【例2.17】已知x1=0,1011求[x1]反解:[x1]反=0,1011正數(shù)反碼=原碼解:x3=0.0000[0.0000]反=1.1111[0]反=1,1111∴[+0]反≠[0]反

[x2]反=1,0100負(fù)數(shù)反碼=數(shù)值位按位取反移碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法1)整數(shù)定義x

為真值,n

為整數(shù)的位數(shù)移碼在數(shù)軸上的表示:正向平移[x]移碼2n+1–12n2n

–1–2n00真值解:x=10100[x]移=25+10100x=–10100[x]移=25

–10100[x]移=2n+x(2n>x

≥2n)=1,10100=

0,01100偏移量(偏置值):給真值加上一個常數(shù)2n符號位:xs=1為正、0為負(fù)數(shù)值位:正數(shù)時,與絕對值相同;負(fù)數(shù)時,為絕對值取反后,末位加1【例2.18】

當(dāng)x=±10100時,求[x]移符號位取反的補(bǔ)碼移碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2)移碼的特點(diǎn)

當(dāng)x=0時[+0]移=25+0

當(dāng)n=5時【例2.19】當(dāng)x=0時,求[x]移;當(dāng)n=5時(n為整數(shù)的位數(shù)),求移碼所對應(yīng)的真值用移碼表示浮點(diǎn)數(shù)的階碼,能方便地判斷浮點(diǎn)數(shù)的階碼大小=1,00000=1,00000=000000[0]移=250∴[+0]移=[0]移[100000]移=25

+(100000)最小的真值為25=100000移碼全0時,對應(yīng)真值的最小值-2n移碼全1時,對應(yīng)真值的最大值2n-1最大的真值為25-1=+11111=111111[+11111]移=25

+11111解:移碼表示法2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法【練1】X=1011,Y=-1011,則:

[X]移=

;[Y]移=

?!揪?】X=0.1101,Y=-0.1101,則:

[X]移=

;[Y]移=

?!揪?】X=1011,Y=-1101,求X和Y的8位移碼機(jī)器數(shù)。

[X]移=

;[Y]移=

。1,10110,01011.11010.00111,00010110,1110011真值與機(jī)器數(shù)的相互轉(zhuǎn)換歸納2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法原、反、補(bǔ):整數(shù)定義+小數(shù)定義;最高位為符號位;書寫上用“.”(小數(shù))或

“,”(整數(shù))將符號位和數(shù)值部分隔開真值為正,原碼=反碼=補(bǔ)碼。符號位為“0”,數(shù)值位為真值的絕對值真值為負(fù),原碼、反碼和補(bǔ)碼的表示形式不同:符號位為“1”,數(shù)值部分原碼=真值數(shù)值位的絕對值,補(bǔ)碼=原碼數(shù)值位“求反加一”,反碼=原碼數(shù)值位“按位取反”移碼僅有整數(shù)定義,符號位為“1”表示正數(shù),符號位為“0”表示負(fù)數(shù)[x]真值[x]原[x]補(bǔ)[-x]補(bǔ)[x]反符號+:0-:1數(shù)值位不變符號xs不變xs=0,數(shù)值位不變xs=1,數(shù)值位取反+1符號xs不變xs=0,數(shù)值位不變xs=1,數(shù)值位取反符號xs取反數(shù)值位取反+1[x]移無論正負(fù)符號xs取反數(shù)值位不變計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法無符號數(shù)和有符號數(shù)原碼表示法補(bǔ)碼表示法表示范圍受機(jī)器字長限制帶數(shù)字化符號的絕對值表示正數(shù)補(bǔ)碼=原碼;

負(fù)數(shù)補(bǔ)碼=原碼數(shù)值位按位取反,末位加1反碼表示法移碼表示法有符號數(shù):機(jī)器數(shù)、真值無符號數(shù)補(bǔ)數(shù)、模數(shù)正數(shù)反碼=原碼=補(bǔ)碼;負(fù)數(shù)反碼=原碼數(shù)值位按位取反0有唯一表示形式000...0;

整數(shù)比原碼多表示-2n;小數(shù)多表示-10有兩種表示形式:000...0和100...00有兩種表示形式:000...0和111...1符號位取反的補(bǔ)碼0有唯一表示形式100...0整數(shù)和小數(shù)定義符號位0正1負(fù)僅整數(shù)定義符號位1正0負(fù)2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法運(yùn)算方法和運(yùn)算部件22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算2.6計(jì)算機(jī)中浮點(diǎn)數(shù)的表示與運(yùn)算2.7C語言中常用數(shù)據(jù)類型轉(zhuǎn)換2.8運(yùn)算器2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)計(jì)算機(jī)中的數(shù)據(jù)編碼1.BCD碼2.ASCII碼3.GBK編碼4.Unicode編碼1.BCD(BinaryCodedDecimal)二-十進(jìn)制碼8421碼

NBCD2421碼余3碼格雷碼有權(quán)碼:表示一位十進(jìn)制數(shù)的二進(jìn)制碼的每一位有確定的權(quán)無權(quán)碼:表示一個十進(jìn)制數(shù)位的二進(jìn)制碼的每一位沒有確定的權(quán)2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)十進(jìn)制數(shù)8421碼2421碼余3碼00000000000111000100010100200100010010130011001101104010001000111501011011100060110110010017011111011010810001110101191001111111002.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)8421碼0000~1001表示0~9,1010~1111為非法碼,各位權(quán)值8、4、2、1,因此得名最基本的BCD碼或二—十進(jìn)制碼,未特別指明的情況下,BCD碼就是指8421碼與二進(jìn)制的轉(zhuǎn)換非常方便,具有奇偶性:最低位0為偶,1為奇【例如】將101011B轉(zhuǎn)換成8421BCD碼表示解:101011B=(43)10=(01000011)BCD2.ASCII(AmericanStandardCodeforInformationInterchange)美國信息交換標(biāo)準(zhǔn)碼2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)最常用,有7位碼和8位碼兩個版本國際上通用的是7位碼版本,即用7位二進(jìn)制編碼表示一個字符,從0000000~1111111,共有128種編碼組合,可表示128個字符。其中:圖形字符或可打印字符96個,包括:0~9共10個數(shù)碼,英文字母52個(26個小寫+26個大寫),34個專用字符(也稱通用符號或其他字符)非圖形字符:32個控制字符計(jì)算機(jī)用一個字節(jié)(8位)存放一個7位ASCII碼,最高位置為02.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)D6D5D4D3D2D1D00000010100111001011101110000NULDLESP0@P`p0001SOHDC1!1AQaq0010STXDC2“2BRbr0011ETXDC3#3CScs0100EOTDC4$4DTdt0101ENQNAK%5EUeu0110ACKSYN&6FVfv0111BELETB‘7GWgw1000BSCAN(8HXhx1001HTEM)9IYiy1010LFSUB*:JZjz1011VTESC+;K[k{1100FFFS,<L\l|1101CRGS-=M]m}1110SORS.>N^n~1111SIUS/?O_oDELASCII碼表大寫字母編碼的碼值比小寫字母小323.GBK2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)GB2312-80《信息交換用漢字編碼字符集基本集》,1981年5月1日實(shí)施GBK全稱《漢字內(nèi)碼擴(kuò)展規(guī)范》:ChineseInternalCodeSpecification,全國信息技術(shù)標(biāo)準(zhǔn)化技術(shù)委員會1995年12月1日制訂,國家技術(shù)監(jiān)督局標(biāo)準(zhǔn)化司、電子工業(yè)部科技與質(zhì)量監(jiān)督司1995年12月15日聯(lián)合以技監(jiān)標(biāo)函1995229號文件的形式,將它確定為技術(shù)規(guī)范指導(dǎo)性文件。是在GB2312-80標(biāo)準(zhǔn)基礎(chǔ)上的內(nèi)碼擴(kuò)展規(guī)范,增加了對人名、古漢語等罕見字的處理,完全兼容。2000年被GB18030-2000《信息交換用漢字編碼字符集基本集的擴(kuò)充》國家強(qiáng)制標(biāo)準(zhǔn)替代GB18030-2022《信息技術(shù)中文編碼字符集》,2023年8月1日正式實(shí)施,是對GB18030標(biāo)準(zhǔn)的第二次修訂,第一版為GB18030-2000(已廢止),第二版為GB18030-2005(已廢止)現(xiàn)行版本共收錄漢字87887個,包含了簡體和繁體漢字,支持中國少數(shù)民族現(xiàn)行文字,包含了日韓等國的象形文字,還包括了214個康熙部首(KangxiRadicals)。覆蓋中國絕大部分人名、地名用生僻字以及文獻(xiàn)、科技等專業(yè)領(lǐng)域的用字對漢字友好,對GB2312完全兼容,對GBK(已廢止)完全兼容,兼容所有Unicode字符4.Unicode2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)統(tǒng)一碼、萬國碼、單一碼UTF-8最廣泛采用,其他實(shí)現(xiàn)方式還有UTF-16和UTF-32UTF-8編碼規(guī)則對于單字節(jié)的符號:字節(jié)的首位設(shè)置為0,其后7位為該符號的Unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的對于n字節(jié)的符號(n>1):符號的第一個字節(jié)的前n位都設(shè)置為1,第n+1位設(shè)置為0,其余字節(jié)的前兩位一律設(shè)置為10。未被特別提及的其他所有二進(jìn)制位,則用于存儲該符號的Unicode碼。這樣的設(shè)計(jì)允許UTF-8編碼動態(tài)地調(diào)整編碼長度,以適應(yīng)不同的字符需求計(jì)算機(jī)中的數(shù)據(jù)校驗(yàn)方式2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)奇偶校驗(yàn)循環(huán)冗余校驗(yàn)海明碼奇偶校驗(yàn)(ParityCheck)2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)在每組數(shù)據(jù)信息上附加一個奇(或偶)校驗(yàn)位,組成的新數(shù)據(jù)稱為奇(或偶)校驗(yàn)編碼校驗(yàn)位的取值(0或1)取決于這組信息中“1”的個數(shù)和校驗(yàn)方式(奇或偶校驗(yàn))奇校驗(yàn)(OddParity):校驗(yàn)編碼中“1”的個數(shù)為奇數(shù)偶校驗(yàn)(EvenParity):校驗(yàn)編碼中“1”的個數(shù)為偶數(shù)特點(diǎn):只能發(fā)現(xiàn)奇數(shù)位出錯,不能糾錯,是其他校驗(yàn)方法的基礎(chǔ)2.循環(huán)冗余校驗(yàn)(CyclicRedundancyCheck,CRC)2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)通過某種數(shù)學(xué)公式建立信息位和校驗(yàn)位之間的約定關(guān)系——能夠校驗(yàn)傳送信息的對錯,并且能自動修正錯誤。廣泛用于通信和磁介存儲器中名稱由來:如果CRC碼有一位出錯,被生成多項(xiàng)式模2除將得到一個不為0的余數(shù)。如果對余數(shù)補(bǔ)0繼續(xù)除下去,將發(fā)現(xiàn)各次所得余數(shù)按出錯模式順序循環(huán)為0:數(shù)據(jù)完整,可正常處理不為0:數(shù)據(jù)不完整/出錯,丟棄/重發(fā)3.海明碼(Hammingcode)2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)

計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)計(jì)算機(jī)中的數(shù)據(jù)編碼計(jì)算機(jī)中的數(shù)據(jù)校驗(yàn)方式BCD:有權(quán)碼(偏移碼)、無權(quán)碼(余三碼);NBCD奇偶校驗(yàn)ASCII,GBK,Unicode循環(huán)冗余校驗(yàn)CRC海明碼(糾錯碼):多重奇偶校驗(yàn)、碼距2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)1996年6月4日,由歐洲12國聯(lián)合研制的“阿麗亞娜5型”(Ariane)運(yùn)載火箭,在法屬圭亞那庫魯航天中心首次發(fā)射?;鸺占s40秒時,在3500米以上高度發(fā)生爆炸,星箭俱毀火箭的水平速率比阿麗亞娜4型提高了五倍,但是64位浮點(diǎn)數(shù)向16位整數(shù)轉(zhuǎn)換的程序沿用了阿麗亞娜4型的程序,導(dǎo)致溢出Ariana5火箭的墜落運(yùn)算方法和運(yùn)算部件22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算2.6計(jì)算機(jī)中浮點(diǎn)數(shù)的表示與運(yùn)算2.7C語言中常用數(shù)據(jù)類型轉(zhuǎn)換2.8運(yùn)算器移位運(yùn)算移位的意義和類型邏輯移位循環(huán)移位算術(shù)移位邏輯運(yùn)算與或非異或2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)移位的意義15.

m=1500.cm小數(shù)點(diǎn)右移2位機(jī)器用語15相對于小數(shù)點(diǎn)

左移2位(小數(shù)點(diǎn)不動)左移絕對值擴(kuò)大(乘以2n,n=1、2…n)右移絕對值縮小(除以2n,n=1、2…n)在計(jì)算機(jī)中,移位與加減配合,能夠?qū)崿F(xiàn)乘除運(yùn)算2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)移位的類型按移位性質(zhì):邏輯移位,循環(huán)移位和算術(shù)移位按被移位數(shù)據(jù)長度:字節(jié)移位,半字長移位,字長移位和多倍字長移位按每次移位的次數(shù):移1位,移n位(n≤被移位數(shù)據(jù)長度)無符號數(shù)的移位邏輯左移邏輯右移低位添0,高位移丟高位添0,低位移丟00邏輯右移1位邏輯左移1位0110101101101011001101011011010110邏輯移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)循環(huán)移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)1)不帶進(jìn)位的存在閉合移位環(huán)路特別適合將數(shù)據(jù)的低字節(jié)數(shù)據(jù)與高字節(jié)數(shù)據(jù)互換根據(jù)是否帶進(jìn)位標(biāo)志位可分為兩類循環(huán)左移循環(huán)右移最高位移到最低位,其余各位依次左移最低位移到最高位,其余各位依次右移不帶進(jìn)位的循環(huán)左移1位01101011011010110101011不帶進(jìn)位的循環(huán)右移1位011010110110101101101011進(jìn)位標(biāo)志CF1進(jìn)位標(biāo)志CF00移位前,CF+數(shù)據(jù)=001101011,僅數(shù)據(jù)最高位和最低位之間有位移通路移位前移位后移位前移位后循環(huán)移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2)帶進(jìn)位的存在閉合移位環(huán)路特別適合將數(shù)據(jù)的低字節(jié)數(shù)據(jù)與高字節(jié)數(shù)據(jù)互換根據(jù)是否帶進(jìn)位標(biāo)志位可分為兩類循環(huán)左移最高位移到進(jìn)位標(biāo)志位,其余各位依次左移,

進(jìn)位標(biāo)志位到移到最低位帶進(jìn)位的循環(huán)左移1位01101011進(jìn)位標(biāo)志CF0移位前,CF+數(shù)據(jù)=0

01101011,指進(jìn)位標(biāo)志位也加入閉合位移通路移位前001101011110101100移位后循環(huán)右移最低位移到進(jìn)位標(biāo)志位,其余各位依次右移,

進(jìn)位標(biāo)志位移到最高位帶進(jìn)位的循環(huán)右移1位移位前0110101001進(jìn)位標(biāo)志CF移位后101101010有符號數(shù)的移位算術(shù)移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)1右移(左)添1左移(右)添00反碼補(bǔ)碼原碼負(fù)數(shù)0原碼、補(bǔ)碼、反碼正數(shù)移位規(guī)則:符號位不變,數(shù)值位添補(bǔ)代碼如下表添補(bǔ)代碼碼制真值巧記:添補(bǔ)代碼均為真值“0”對應(yīng)的機(jī)器數(shù)代碼

歸納:補(bǔ)碼無論正負(fù),算術(shù)右移中的添補(bǔ)代碼可視為符號位向最高數(shù)值位的復(fù)制算術(shù)移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)

+60,0000110+130,0001101+1040,1101000+520,0110100+260,0011010移位前[A]原=[A]補(bǔ)=[A]反對應(yīng)的真值機(jī)器數(shù)移位操作左移一位左移兩位右移一位右移兩位算術(shù)移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)

2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)移位操作[A]原[A]反原碼、反碼對應(yīng)的真值[A]補(bǔ)補(bǔ)碼對應(yīng)真值1,00110101,1100101-261,1100110-26移位前左移一位左移兩位右移一位右移兩位通過定義可知,原碼、反碼的表示范圍是相同的,因此對應(yīng)的真值也相同。移位計(jì)算如下表所示:1,0110100-521,11010001,00011011,0000110-104-13-61,10010111,00101111,11100101,11110011,10011001,00110001,11100111,1111001-52-104-13-7【例2.21】設(shè)機(jī)器數(shù)字長8位(含2位符號位),若機(jī)器數(shù)DAH為補(bǔ)碼,進(jìn)行算術(shù)左移一位和算術(shù)右移一位的結(jié)果是多少(仍用十六進(jìn)制表示)?解:將DAH寫成二進(jìn)制數(shù)表示為11,011010。根據(jù)雙符號位算術(shù)移位低符號位要參與移位的規(guī)則,且負(fù)數(shù)補(bǔ)碼算術(shù)左移添0、右移添1:11,011010左移10,110100=B4H(高位移丟,低位添0)11,011010右移11,101101=EDH(低位移丟,高位添1)雙符號位算術(shù)移位運(yùn)算中低符號位要參與移位2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)算術(shù)移位的硬件實(shí)現(xiàn)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)R=2,當(dāng)要移丟的機(jī)器數(shù)等于或包含真值1:左移丟1出錯,右移丟1影響精度(a)真值為正(b)負(fù)數(shù)的原碼(c)負(fù)數(shù)的補(bǔ)碼(d)負(fù)數(shù)的反碼00010丟1丟1出錯影響精度出錯影響精度正確(丟0出錯)影響精度正確(丟0出錯)正確(丟0影響精度)對真值為正、負(fù)數(shù)補(bǔ)碼、負(fù)數(shù)反碼進(jìn)行算術(shù)右移時,添補(bǔ)位可視為符號位自我復(fù)制;而對于負(fù)數(shù)原碼等,則必須保持符號位不變,數(shù)據(jù)位進(jìn)行移位運(yùn)算。邏輯運(yùn)算2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)邏輯“與”運(yùn)算也稱邏輯乘法,用符號“∧”或“?”表示運(yùn)算規(guī)則:0∧0=0,0∧1=0,1∧0=0,1∧1=1與門邏輯功能概括:全1出1與門邏輯符號邏輯運(yùn)算2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)邏輯“或”運(yùn)算也稱邏輯加法,用符號“?”或“+”表示運(yùn)算規(guī)則:0?0=0,0?1=1,1?0=1,1?1=1或門邏輯功能概括:見1出1或門邏輯符號邏輯運(yùn)算2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)非門邏輯符號(反相器)邏輯“非”運(yùn)算也稱求反運(yùn)算,在邏輯變量上加一短線“-”表示運(yùn)算規(guī)則:1=0,0=1邏輯運(yùn)算2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)邏輯“異或”運(yùn)算不帶進(jìn)位的加法,也稱半加,用符號“⊕”表示運(yùn)算規(guī)則:0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0異或門邏輯功能概括:相異出1異或門邏輯符號循環(huán)移位算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)移位運(yùn)算邏輯運(yùn)算邏輯移位:無符號數(shù)的移位邏輯與:全1出1算術(shù)移位:有符號數(shù)的移位邏輯或:見1出1邏輯非:求反不帶進(jìn)位的循環(huán)移位:小循環(huán)帶進(jìn)位的循環(huán)移位:大循環(huán)雙符號位的低符號位要參與移位數(shù)值位添補(bǔ)代碼均為對應(yīng)真值0的機(jī)器數(shù)代碼左移丟1出錯,右移丟1影響精度(均指真值1)邏輯異或:相異出12.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)1991年2月25日,一個愛國者導(dǎo)彈連未能成功地攔截飛向沙特宰赫蘭兵營的飛毛腿導(dǎo)彈,致使美軍28名士兵喪生,98名士兵受傷。計(jì)算機(jī)運(yùn)算的舍入誤差,導(dǎo)致計(jì)算精度不夠,最終攔截失敗。計(jì)算精度釀成的悲劇運(yùn)算方法和運(yùn)算部件22.1計(jì)算機(jī)中的進(jìn)制及其相互轉(zhuǎn)換2.2計(jì)算機(jī)中數(shù)值型數(shù)據(jù)的表示方法2.3計(jì)算機(jī)中的數(shù)據(jù)編碼與校驗(yàn)2.4算術(shù)運(yùn)算和邏輯運(yùn)算基礎(chǔ)2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算2.6計(jì)算機(jī)中浮點(diǎn)數(shù)的表示與運(yùn)算2.7C語言中常用數(shù)據(jù)類型轉(zhuǎn)換2.8運(yùn)算器定點(diǎn)數(shù)的表示方法2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算定點(diǎn)數(shù):約定機(jī)器中所有數(shù)據(jù)的小數(shù)點(diǎn)位置固定不變純整數(shù):小數(shù)點(diǎn)隱含在最末尾純小數(shù):小數(shù)點(diǎn)固定在最高位的后面整數(shù)+小數(shù):小數(shù)點(diǎn)固定在某個指定的位置,需約定比例因子定點(diǎn)數(shù)的表示方法2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算xf

x1x2

xn…數(shù)符數(shù)值部分小數(shù)點(diǎn)位置xf

x1x2

xn…數(shù)符數(shù)值部分小數(shù)點(diǎn)位置或定點(diǎn)小數(shù)定點(diǎn)整數(shù)定點(diǎn)機(jī)小數(shù)定點(diǎn)機(jī)整數(shù)定點(diǎn)機(jī)原碼補(bǔ)碼反碼–(1–2-n)~+(1–2-n)

1.11…1~0.11…1–(2n

–1)~+(2n

–1)

1,11…1~0,11…1–1~+(1–2-n)

1.00…0~0.11…1–2n~+(2n

–1)

1,00…0~0,11…1–(1–2-n)~+(1–2-n)

1.00…0~0.11…1–(2n

1)~+(2n

–1)

1,00…0~0,11…1定點(diǎn)數(shù)補(bǔ)碼加減運(yùn)算2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算補(bǔ)碼加法運(yùn)算[A]補(bǔ)+[B]補(bǔ)

=[A+B]補(bǔ)補(bǔ)碼減法運(yùn)算[A]補(bǔ)–[B]補(bǔ)

=[A–B]補(bǔ)=[A]補(bǔ)+

[–B]補(bǔ)

被減數(shù)+減數(shù)的機(jī)器負(fù)數(shù):由[B]補(bǔ)求

[-B]補(bǔ)符號位與數(shù)值位一同運(yùn)算,結(jié)果仍為補(bǔ)碼定點(diǎn)數(shù)補(bǔ)碼加減運(yùn)算2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算【例2.22】

解:A=15=0001111B=24=0011000[A]補(bǔ)+[B]補(bǔ)+[A]補(bǔ)=0,0001111=0,0100111=[A+B]補(bǔ)[B]補(bǔ)=0,0011000如求A+B,則將結(jié)果轉(zhuǎn)換為真值A(chǔ)+B=

0100111=39定點(diǎn)數(shù)補(bǔ)碼加減運(yùn)算2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算【例2.22】

解:A=15=0001111B=24=0011000[A]補(bǔ)+[–

B]補(bǔ)+[A]補(bǔ)=0,0001111[–

B]補(bǔ)=1,1101000=1,1110111=[A–B]補(bǔ)[B]補(bǔ)=0,0011000如求A–B

,則將結(jié)果轉(zhuǎn)換為真值注意結(jié)果為負(fù)數(shù)補(bǔ)碼:轉(zhuǎn)換真值時,數(shù)值位按位取反、末位+1A

B=

–0001001=–9由[B]補(bǔ)求[-B]補(bǔ):將[B]補(bǔ)連同符號位在內(nèi),按位取反,末位加1定點(diǎn)數(shù)的溢出判斷2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算溢出:運(yùn)算結(jié)果超出了機(jī)器表示范圍兩個異號數(shù)相加或兩個同號數(shù)相減不會溢出,只有兩個同號數(shù)相加或兩個異號數(shù)相減才可能溢出定點(diǎn)數(shù)的溢出判斷2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算根據(jù)單符號位(進(jìn)位位)判斷正溢:a=b=0(兩數(shù)同為正),c=1(結(jié)果為負(fù))負(fù)溢:a=b=1(兩數(shù)同為負(fù)),c=0(結(jié)果為正)用異或電路判斷1)63+66=129[63]補(bǔ)=0,0111111

[66]補(bǔ)=0,1000010

0,0111111+

0,1000010

1,0000001【例如】2)-63+(-66)=-129[-63]補(bǔ)=1,1000001

[-69]補(bǔ)=1,0111110

1,1000001+

1,0111110

10,1111111僅數(shù)值位向符號位發(fā)生了進(jìn)位正溢僅符號位向更高位(丟掉位)發(fā)生了進(jìn)位負(fù)溢2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算定點(diǎn)數(shù)的溢出判斷2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算根據(jù)雙符號位(變形補(bǔ)碼)判斷結(jié)果的雙符號位相同,沒有溢出,00為正,11為負(fù)結(jié)果的雙符號位不同,有溢出。01為正溢,10為負(fù)溢最高符號位代表其真正的符號操作數(shù)和結(jié)果在寄存器或存儲器中仍用一個符號位,僅運(yùn)算時擴(kuò)充為雙符號位[x]補(bǔ)'

=0.x1>x≥04+x0>x≥–1(mod4)[x]補(bǔ)'+[y]補(bǔ)'=[x+y]補(bǔ)'(mod4)[x

–y]補(bǔ)'=[x]補(bǔ)'+[–

y]補(bǔ)'(mod4)【例如】2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算1)63+66=129[63]補(bǔ)=00,0111111

[66]補(bǔ)=00,1000010

00,0111111+

00,1000010

01,00000012)-63+(-66)=-129[-63]補(bǔ)=11,1000001

[-69]補(bǔ)=11,011111011,1000001+

11,0111110

110,1111111雙符號為01,正溢雙符號為10,負(fù)溢【練習(xí)】解:A=

0.1011B=

0.0111[A+B]補(bǔ)’+[A]補(bǔ)’

00.1011[B]補(bǔ)’

00.0111

01.0010已知A=+,B=+,試用變形補(bǔ)碼求A+B1116716符號位為“01”,正溢2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算下溢:當(dāng)機(jī)器0處理正下溢:運(yùn)算結(jié)果在0至最小正數(shù)之間負(fù)下溢:運(yùn)算結(jié)果在0至最大負(fù)數(shù)之間(絕對值最小負(fù)數(shù))定點(diǎn)數(shù)的溢出判斷2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算定點(diǎn)數(shù)的溢出根據(jù)數(shù)值本身判斷;浮點(diǎn)數(shù)的溢出根據(jù)階碼是否溢出進(jìn)行判斷上溢:須中斷處理正上溢:運(yùn)算結(jié)果大于最大正數(shù)負(fù)上溢:運(yùn)算結(jié)果小于最小負(fù)數(shù)(絕對值最大負(fù)數(shù))正下溢負(fù)下溢最小負(fù)數(shù)最大正數(shù)最小正數(shù)下溢負(fù)數(shù)區(qū)正數(shù)區(qū)0上溢上溢負(fù)上溢正上溢最大負(fù)數(shù)“千年蟲”解決之后,“2038年”提出新的挑戰(zhàn)大多數(shù)C語言程序都使用到一個叫做“標(biāo)準(zhǔn)時間庫”的程序庫,這個時間庫用一個標(biāo)準(zhǔn)的4字節(jié)也就是32位的形式來儲存時間信息32位存儲空間表示有符號數(shù)時最大值是2147483647,從1970年1月1日0點(diǎn)開始計(jì)時,于2038年1月19日凌晨03:14:07達(dá)到最大值,在那驚心動魄的最后一秒后,會發(fā)生什么?2038年問題定點(diǎn)數(shù)乘法運(yùn)算2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算原碼一位乘補(bǔ)碼一位乘(校正法)補(bǔ)碼一位乘(比較法——Booth法)分析筆算乘法2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算A=–0.1101B=0.1011A×B=–0.100011110.11010.101111011101000011010.10001111乘積符號位單獨(dú)處理乘數(shù)的某一位決定是否加被乘數(shù)4個位積一起相加乘積是乘數(shù)的2倍長×乘積的符號心算求得

??異或不能一次完成,加法器需倍長?機(jī)器運(yùn)算方法2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算0.11010.101111011101000011010.10001111被乘數(shù)乘數(shù)×部分積部分積乘數(shù)拋棄右移代替左移。部分積相加時最低位只用一次,此位將來不再參與運(yùn)算,因此可將部分積寄存器右移1位。乘數(shù)的各位從右向左均只用一次,最低位不再使用,因此部分積右移時,乘數(shù)寄存器也可右移1位,即可用乘數(shù)寄存器的最高位接收部分積移出的低位。筆算乘法改進(jìn)2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算右移一位A

?B=A

?0.1011=0.1A+0.00A+0.001A+0.0001A=0.1A+0.00A+0.001(A+0.1A)=0.1A+0.01[0?

A+0.1(A+0.1A)]=0.1{A+0.1[0?

A+0.1(A+0.1A)]}=2-1{1?A

+2-1[0?A+2-1(1?A

+2-1(1?A+0))]}①②⑧第一步被乘數(shù)A

+0第二步右移一位,得新的部分積第八步右移一位,得結(jié)果③第三步部分積

+

被乘數(shù)…表示部分積的初始值綠色為乘數(shù)的各位改進(jìn)后的筆算乘法過程2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算0.00000.11010.11010.11010.00000.1101初態(tài),部分積=0乘數(shù)為1,加被乘數(shù)乘數(shù)為1,加被乘數(shù)乘數(shù)為0,加01.0011

0.1001

1.0001111乘數(shù)為1,加被乘數(shù)1011=0.01101,形成新的部分積1101=0.10011,形成新的部分積1110=0.01001,形成新的部分積1111=被乘數(shù)/高位部分積低位部分積/乘數(shù)說明++++0.100011111,得結(jié)果被乘數(shù)只與部分積的高位相加由乘數(shù)的末位決定被乘數(shù)是否與原部分積相加,然后→1位形成新的部分積,同時乘數(shù)→1

位(末位移丟),空出高位存放部分積的低位。硬件3

個寄存器,具有移位功能1

個全加器乘法運(yùn)算可用加和移位實(shí)現(xiàn)

n=4,加4次,移4次

(n為參與運(yùn)算的數(shù)值部分位數(shù))乘法運(yùn)算過程歸納2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算原碼一位乘2.5計(jì)算機(jī)中定點(diǎn)數(shù)的表示與運(yùn)算設(shè)[x]原=x0.x1x2

xn…[y]原=y0.

y1y2

yn…=x0

y0.x*y*式中x*=x1x2

xn

為x

的絕對值…y*=y1y2

yn

為y

的絕對值…乘積的符號位單獨(dú)處理x0

y0數(shù)值部分為絕對值相乘x*?

y*,通過n次“加法”和“右移”操作實(shí)現(xiàn)(n為乘數(shù)數(shù)值部分位數(shù))部分積可采用一位或兩位符號位[x

?y]原=x0

y0

.

(0.[x1x2

xn])(0.[y1y2

yn])……【例2.23】x=–0.1110y=–0.1101求[x?y]原解:數(shù)值部分的運(yùn)算如右0.00000.11100.11100.00000.11100.1110部分積初態(tài)z

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論