資源描述:
《第2次小課 算術(shù)、邏輯運(yùn)算,字符型、浮點(diǎn)型數(shù)據(jù),漢字機(jī)內(nèi)表示法.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第2次字符、漢字、浮點(diǎn)型數(shù)據(jù)機(jī)內(nèi)表示法及算術(shù)、邏輯運(yùn)算張莉娜軟件工程系實(shí)驗(yàn)?zāi)康恼莆崭↑c(diǎn)型數(shù)據(jù)的機(jī)內(nèi)存儲(chǔ)規(guī)律;掌握字符、漢字的機(jī)內(nèi)存儲(chǔ)規(guī)律;掌握算術(shù)、邏輯運(yùn)算技巧;一.浮點(diǎn)數(shù)的表示IEEE754—1985標(biāo)準(zhǔn)簡(jiǎn)介IEEE754—1985標(biāo)準(zhǔn)規(guī)定了float(單精度型)、double(雙精度型)浮點(diǎn)數(shù)R的二進(jìn)制存儲(chǔ)的編碼格式如下:對(duì)于float型,IEEE754—1985標(biāo)準(zhǔn)規(guī)定用32位二進(jìn)制編碼表示,具體如下:最高位31位,保存符號(hào)位S,“O”表示正數(shù),“1”表示負(fù)數(shù)。3O位-23位,共8位,移碼方式(指數(shù)值加上偏移量127)保存指數(shù)部分,稱為階碼。如十進(jìn)制數(shù)13.75
2、浮點(diǎn)數(shù)表示形式為:符號(hào)S指數(shù)E尾數(shù)M二.字符的表示字符信息用二進(jìn)制數(shù)據(jù)表示,稱為符號(hào)數(shù)據(jù)。目前國(guó)際上普遍采用的一種字符系統(tǒng)是美國(guó)信息交換標(biāo)準(zhǔn)字符碼(ASCII),用于給西文字符編碼,這種編碼由7位二進(jìn)制數(shù)組合而成,可以表示128種字符。在計(jì)算機(jī)中,每個(gè)字符占用一個(gè)字節(jié)空間,最高位置“0”。在ASCII碼中,按其作用可分為以下4部分。(1)34個(gè)控制字符。(2)10個(gè)阿拉伯?dāng)?shù)字。(3)52個(gè)英文大小寫字母。(4)32個(gè)專用符號(hào)。三.漢字存儲(chǔ)的機(jī)內(nèi)碼1.漢字編碼國(guó)家標(biāo)準(zhǔn)GB2312一個(gè)漢字和4個(gè)十進(jìn)數(shù)字對(duì)應(yīng)前兩個(gè)稱為區(qū)號(hào)1~94后兩個(gè)稱為位號(hào)1~94極限編碼8836個(gè),其
3、中已定義6763個(gè)漢字分為一級(jí)3755個(gè)二級(jí)3008個(gè)682個(gè)非漢字圖形字符三.漢字存儲(chǔ)的機(jī)內(nèi)碼2.漢字機(jī)內(nèi)碼最常用的一種內(nèi)部碼格式是:(1)一個(gè)漢字的內(nèi)碼占據(jù)兩個(gè)字節(jié)。(2)每個(gè)字節(jié)中使用標(biāo)志位來(lái)表示這是個(gè)漢字字節(jié)還是個(gè)ASCIl碼字符字節(jié);漢字的第一個(gè)字節(jié)的標(biāo)志位為“1”,第二個(gè)字節(jié)的標(biāo)志位可以是“1”也可以是“0”;ASCIl碼字符的標(biāo)志位為“0”。(3)漢字的第一個(gè)字節(jié)中除標(biāo)志位外的其余7位內(nèi)容是:漢字的GB2312碼區(qū)號(hào)+32;第二個(gè)字節(jié)標(biāo)志位外的其余7位內(nèi)容是:漢字的GB2312碼位號(hào)+32(見(jiàn)圖5-13)。三.漢字存儲(chǔ)的機(jī)內(nèi)碼這種方案實(shí)現(xiàn)的前提是:系統(tǒng)使
4、用7單位的ASCIl碼表示字符.每個(gè)字符編碼用一個(gè)字節(jié)存儲(chǔ),這樣就有一個(gè)“空閑”位可以用作漢字或者字符的標(biāo)志位。那么,為什么漢字內(nèi)碼不直接用國(guó)標(biāo)碼的區(qū)號(hào)和位號(hào)來(lái)表示,而要作一個(gè)加32的移位呢?這是種以防萬(wàn)一的考慮。區(qū)、位號(hào)的取值范圍是l~94,加上32后,碼值在33~126之間。這樣就避過(guò)ASCIl碼的控制字符區(qū)間(0·32)。萬(wàn)一系統(tǒng)沒(méi)有漢字處理能力,把漢字內(nèi)碼字節(jié)的右7位當(dāng)作字符處理,也只是錯(cuò)為可印出字符,引起混亂的程度也許不那么嚴(yán)重。如:2020創(chuàng)44三.漢字存儲(chǔ)的機(jī)內(nèi)碼例:已知“廣東”這兩個(gè)漢字的內(nèi)部碼為:B9E3和B6AB,請(qǐng)問(wèn)它們的區(qū)位碼分別是什么?解:首
5、先看“廣”字,每個(gè)字節(jié)的最高位變?yōu)?后則為(39)H和(63)H每個(gè)字節(jié)減去20H(32)后則為(19)H和(43)H轉(zhuǎn)換成十進(jìn)制就是25和67,他就是“廣”字的區(qū)碼和位碼,所以“廣”字的區(qū)位碼就是:2567同理,“東”字的區(qū)位碼是:2211驗(yàn)證:首先用記事本寫入兩個(gè)字“廣東”,然后再用16進(jìn)制編輯器打開(kāi)這個(gè)文本文件,可以看到“廣東”兩個(gè)字的機(jī)內(nèi)碼是B9E3和B6AB。然后,再用區(qū)位碼輸入法輸入:2567和2211就可以在文本編輯器中看到“廣東”兩個(gè)漢字。四.算術(shù)運(yùn)算1.補(bǔ)碼加法運(yùn)算[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)2.補(bǔ)碼減法運(yùn)算[X-Y]補(bǔ)=[X+(-Y)]補(bǔ)=[X
6、]補(bǔ)+[-Y]補(bǔ)四.算術(shù)運(yùn)算[例1]X=(1001010)2,Y=(-101001)2,用補(bǔ)碼加法求X+Y=?解:[X]補(bǔ)=01001010[Y]補(bǔ)=11010111。用補(bǔ)碼運(yùn)算:用真值運(yùn)算:[X]補(bǔ)010010101001010X+[Y]補(bǔ)11010111+-101001Y————————————————丟掉←100100001=[X+Y]補(bǔ)0100001X+Y[X+Y]補(bǔ)=[X]補(bǔ)+[Y]補(bǔ)=01001010+11010111=00100001由補(bǔ)碼運(yùn)算結(jié)果可知:X+Y=00100001。這與真值運(yùn)算的結(jié)果一致。四.算術(shù)運(yùn)算[例2]X=+1101010,Y=+11
7、0100,用補(bǔ)碼加法求X-Y=?解:[X]補(bǔ)=01101010,[Y]補(bǔ)=00110100,[-Y]補(bǔ)=11001100[X-Y]補(bǔ)=[X]補(bǔ)+[-Y]補(bǔ)=01101010+11001100=00110110則:X-Y=+110110。五.邏輯運(yùn)算1.“與”(AND)運(yùn)算的規(guī)則如下:0∧0=00∧1=01∧0=01∧1=1式中,“∧”是“與”運(yùn)算符號(hào),通常也可用“·”代替。由規(guī)則看出C=A∧B式中,只有當(dāng)A與B同時(shí)為“1”時(shí),結(jié)果C才為“1”;否則,C總為0。例如,兩個(gè)8位二進(jìn)制數(shù)的“與”運(yùn)算結(jié)果如下:10110110∧11010111=100101