資源描述:
《第2次小課 數(shù)據(jù)運算、浮點數(shù)據(jù)存儲.ppt》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第2次小課算術(shù)、邏輯運算;字符型、浮點型數(shù)據(jù)機內(nèi)表示法實驗?zāi)康模赫莆账阈g(shù)、邏輯運算技巧,能夠掌握字符、漢字、浮點型數(shù)據(jù)的機內(nèi)存儲規(guī)律。1一.算術(shù)運算1.補碼加法運算[例1]X=(1001010)2,Y=(-101001)2,用補碼加法求X+Y=?解:[X]補=01001010[Y]補=11010111。用補碼運算:用真值運算:[X]補010010101001010X+[Y]補11010111+-101001Y—————————————————丟掉←100100001=[X+Y]補0100001X+Y[X+Y]補=[
2、X]補+[Y]補=01001010+11010111=00100001由補碼運算結(jié)果可知:X+Y=00100001。這與真值運算的結(jié)果一致。22.程序驗證main(){intx=74,y=-41,z;z=x+y;printf("xyz");printf("%d%d%d",x,y,z);printf("%X%X%X",x,y,z);}運行結(jié)果:xyz74-41334AFFD7213二.邏輯運算1.“與”(AND)運算的規(guī)則如下:0∧0=00∧1=01∧0=01∧1=1式中,“∧”是“與”運算符號,通常也可
3、用“·”代替。由規(guī)則看出C=A∧B式中,只有當A與B同時為“1”時,結(jié)果C才為“1”;否則,C總為0。例如,兩個8位二進制數(shù)的“與”運算結(jié)果如下:10110110∧11010111=1001011010110110∧11010111—————————1001011042.程序驗證main(){intx=182,y=215,z;z=x&y;printf("xyz");printf("%d%d%d",x,y,z);printf("%X%X%X",x,y,z);}運行結(jié)果:xyz182215150B6D796
4、5三.浮點數(shù)的表示1.浮點數(shù)表示如果階碼可以取不同的數(shù)值,并與尾數(shù)一并表示,稱這種表示法為數(shù)的浮點表示法。這樣的數(shù)稱為浮點數(shù)。這時:其中階碼P用整數(shù)表示,可為正數(shù)或負數(shù)。用一位二進制數(shù)Pf表示階碼的符號位,當Pf=0時,表示階碼為正數(shù);當Pf=1時,表示階碼為負數(shù)。而尾數(shù)S一般為純小數(shù),用定點小數(shù)來表示,同樣用Sf表示尾數(shù)的符號,Sf=0表示尾數(shù)為正數(shù)(也就是N為正);Sf=1表示尾數(shù)為負數(shù)??梢?,在機器中表示一個浮點數(shù),要分為階碼和尾數(shù)兩個部分來表示。一般來說,階碼部分的位數(shù)決定了數(shù)的表示范圍,而尾數(shù)部分的位數(shù)決
5、定了數(shù)的精度。62.C語言中浮點數(shù)的存儲格式O前言實數(shù)在計算機中一般以二進制浮點數(shù)的形式存放。可是,其具體的存儲格式等在有關(guān)的書籍中很難查到,多是泛泛地給出不同類型的浮點數(shù)(單精度型、雙精度型、長雙精度型)的十進制數(shù)的數(shù)值范圍,及其大致能提供的有效數(shù)字位數(shù)。而用計算機進行數(shù)值運算時,經(jīng)常需要關(guān)注有效數(shù)字的位數(shù),即數(shù)據(jù)的精確度問題。為此查閱了美國電氣電子工程師學(xué)會(IEEE)的IEEE754—1985標準,該標準給出了有關(guān)浮點數(shù)在計算機中的存儲格式(多數(shù)計算機語言中浮點數(shù)的實現(xiàn)均參照或遵循此標準)。7本文在此基礎(chǔ)上通
6、過C程序驗證等總結(jié)了C語言中浮點數(shù)的實現(xiàn)機制、準確的表示范圍等;并進一步討論了浮點數(shù)的十進制數(shù)有效數(shù)字位數(shù);論證了二進制數(shù)的位數(shù)與十進制數(shù)有效數(shù)字位數(shù)的關(guān)系。1有關(guān)科學(xué)記數(shù)法十進制的實數(shù)R的二進制數(shù)的科學(xué)記數(shù)法可表示為:R=(-1)S×M×2E其中s表示符號,S=1表示負數(shù),S=0表示正數(shù)M為二進制數(shù)的系數(shù),規(guī)范化二進制數(shù)的M形式為1.b1b2??bn。整數(shù)E為二進制數(shù)的指數(shù)。82IEEE754—1985標準簡介IEEE754—1985標準規(guī)定了float(單精度型)、double(雙精度型)浮點數(shù)R的二進制存儲的
7、編碼格式如下:對于float型,IEEE754—1985標準規(guī)定用32位二進制編碼表示,具體如下:·最高位31位,保存符號位S,“O”表示正數(shù),“1”表示負數(shù)。·3O位-23位,共8位,移碼方式(指數(shù)值加上偏移量127)保存指數(shù)部分,稱為階碼。符號S階碼E尾數(shù)M9·22位-0位,共23位,保存系數(shù)部分,稱為尾數(shù),對于規(guī)范化二進制數(shù),整數(shù)位的前導(dǎo)“1”不保存(隱含),直接保存小數(shù)部分b1b2?b23。規(guī)定:J≤E≤254,R=(-1)S×(1+0.M)×2E-127此時R為規(guī)范化數(shù);·若E=0且M=0,R=0;·若E
8、=255且M=0,R溢出(用+INF、-INF分別表示正、負無窮大);103浮點數(shù)的驗證通過直接輸入十進制實數(shù)的方法,來驗證浮點數(shù)在計算機中的存儲格式將非常麻煩和不準確,如能直接輸入和查看十進制數(shù)對應(yīng)的二進制編碼將非常方便和有效。利用C語言的union(共用體/聯(lián)合體)類型,就可以很容易地實現(xiàn)。例如以下的公用體定義:union{floatr;//長整型與單精