試驗03整數(shù)的表示試驗_第1頁
試驗03整數(shù)的表示試驗_第2頁
試驗03整數(shù)的表示試驗_第3頁
試驗03整數(shù)的表示試驗_第4頁
試驗03整數(shù)的表示試驗_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

浙江大學(xué)城市學(xué)院 計算學(xué)院浙江大學(xué)城市學(xué)院實驗報告課程名稱 計算機系統(tǒng)原理實驗 實驗項目名稱 實驗三數(shù)據(jù)的機器級表示 實驗成績指導(dǎo)老師(簽名)日期一、實驗?zāi)康模?、通過無符號數(shù)和帶符號整數(shù)之間的相互轉(zhuǎn)換來理解無符號數(shù)和補碼整數(shù)的表示;2、了解IEEE754浮點數(shù)在機器中的應(yīng)用,特別是一些特殊值的處理。二、實驗步驟:1、用32位補碼表示的機器上編譯并執(zhí)行以下程序,記錄程序的執(zhí)行結(jié)果,并解釋原因。T^mcludc<stdliintmainfk1{¥inti-2:474的6會:,■■■■J-2147483648<2147483647);^printfr/d'n’〔i7147483&47)尸prijitfC'%d^\21474£3647-1-<>1474£3647):圖3-1運行結(jié)果:浙江大學(xué)城市學(xué)院計算學(xué)院浙江大學(xué)城市學(xué)院計算學(xué)院root@loca[host:- -口文件6編瑁?查看配)終端①標(biāo)簽⑧1幫助但)[root?localhost?]#geditrootoilocalhost"]#gcctestsac-otest3test3ac:Infunctionnisin=1-lcslS.^S:警告-:這個小數(shù)常量僅ISOCW中是無符號的3sL丸「4:警告:這個小數(shù)常量僅ISOC90中是無符號的[rootOlocalliasl二二,/les13011[rojtwhjcalhosL,=對運算結(jié)果的解釋:第一個結(jié)果:因為在ISOC90標(biāo)準(zhǔn)中,編譯器將-2147483648分為兩個部分來處理。首先將2147483648看成無符號整型,其機器數(shù)為0x80000000,然會對其取負(fù),結(jié)果仍為0x80000000,還是將其看成無符號整型,其值仍為21474833648,因此前者大于后者。第二個結(jié)果:由于i為int型變量,因此這兩個數(shù)皆為帶符號數(shù),前者小于后者。第三個結(jié)果:編譯器首先將2147483647看成帶符號整型,然后對其取負(fù),得到-2147483647,然后對其-1得到-2147483648,因此前者大于后者。2、編寫程序,計算表2.1中的表達(dá)式,說明運算類型(無符號、帶符號),得到運算結(jié)果,并說明為什么是這樣的運算結(jié)果(參考第二章習(xí)題8);源代碼:浙江大學(xué)城市學(xué)院 計算學(xué)院運算結(jié)果:1口root@laicalhGst:--□X文件B編輯口查看⑦終端①標(biāo)蜜嘮幫助助[TDDtwloca1host a/tC3t411010111[raaLftlocalbosL”#對運算結(jié)果的解釋:1.0和0U都是無符號數(shù),值相等-1和0都為帶符號數(shù),因此前者小于后者浙江大學(xué)城市學(xué)院計算學(xué)院0后加上U表示無符號數(shù),因此比較時前者大于后者-2147483647-1的計算結(jié)果為一個int型整數(shù),為帶符號數(shù),因此前者大于后者。加上U的數(shù)都為無符號數(shù),因此前者小于后者2147483648U在經(jīng)過int強制類型轉(zhuǎn)換后,變?yōu)閹Х柕?2147483648,因此前者大于后者兩個數(shù)皆為帶符號數(shù),因此前者大于后者數(shù)據(jù)轉(zhuǎn)化為無符號數(shù),前者11-1B(2八32-1)>后者11-10B(2八32-2)3、分析以下代碼:intsum(inta[],unsignedlen){inti,sum=0;for(i=0;i<=len-1;i++)sum+=a[i];}returns叫當(dāng)len=0時,執(zhí)行sum函數(shù)的for循環(huán)時會發(fā)生AccessViolation,即段錯誤異常.但是,當(dāng)參數(shù)len說明為int型時,sum函數(shù)能正確執(zhí)行,為什么?編寫程序測試并分析。原因分析:因為當(dāng)len的類型為unsigned時,len-1發(fā)生了下溢出,因此出現(xiàn)段錯誤。而int的表示范圍包括了-1,因此正常運行。測試程序:Unsigned:浙江大學(xué)城市學(xué)院計算學(xué)院Int:浙江大學(xué)城市學(xué)院計算學(xué)院4、在32位計算機中運行一個C語言程序,在該程序中出現(xiàn)了以下變量的初值,請手工算出它們對應(yīng)的機器數(shù)(用十六進(jìn)制表示)(第二章習(xí)題9),寫出詳細(xì)的計算過程,然后用程序驗證在內(nèi)存中這些變量的機器數(shù),并截圖顯示。(1)intx=-32768(2)shorty=522(3)unsignedz=65530(4)charc=’@’(5)floata=-1.1(6)doubleb=10.5

浙江大學(xué)城市學(xué)院計算學(xué)院浙江大學(xué)城市學(xué)院計算學(xué)院手工計算過程:l.Intx=-32768二進(jìn)制原碼(32位)10000000000000001000000000000000補碼:除符號位外,每位取反,末位加一11111111111111110111111111111111+1=11111111111111111000000000000000轉(zhuǎn)化為十六進(jìn)制數(shù):ffff8000shorty=522二進(jìn)制原碼(16位) 0000001000001010補碼:0000001000001010十六進(jìn)制:020aunsignedz=65530二進(jìn)制原碼(32位)00000000000000001111111111111010補碼:00000000000000001111111111111010十六進(jìn)制:0000fffacharc='@'@的ASCII碼為64二進(jìn)制原碼(8位):01000000補碼:01000000十六進(jìn)制數(shù):40floata=-1.1二進(jìn)制原碼(32位)符號位:1(負(fù))階數(shù)0->二進(jìn)制00000000->偏移01111111->階碼:01111111尾數(shù):00011001100110011001101得到二進(jìn)制機器數(shù):10111111100011001100110011001100十六進(jìn)制:bf8cccch(與程序驗證有出入)Doubleb=10.5二進(jìn)制1010.1規(guī)格化后:1.0101*2八11符號位:0階數(shù):11階碼:000000000000011+011111111111111=100000000000010尾0101000……000(52位)結(jié)果即:01000000000000100101000……000(52位)十六進(jìn)制即4025000000000000(與程序驗證有出入)編程驗證源碼:

浙江大學(xué)城市學(xué)院計算學(xué)院查看內(nèi)存結(jié)果截圖:FDOt@locaIhnst:z浙江大學(xué)城市學(xué)院計算學(xué)院查看內(nèi)存結(jié)果截圖:文件的蛹靠拶查看M終端①標(biāo)饕@幫助也)Tfp€'helpinfcTfollofredbyinfosubconiisndnameforfulldocurnentatlcm-Type1aprupust<jrJ'Luiearcbfor匚ummand"srelaLtdLu"wurd".Coramaiidnaneabbre^ia'tionsaresi1ovedifunambigoouE-(£db)工/x¥&XNosymbol'工"incurremcontexta(gdb)runStartingpFfigram;''rnnt/mnS4(gdb)\/x<0KbfTre744:(gdb)克/xh0xb(fffe74a:(zdb)工/x¥0xbffft74c:(gdb)x/xb0^bfffe753:(gdb)工/xv0^bf£fc754:(gdb)x/xgOKbfffe758:|doubleb--10.5:r限o.<rrrr8c>oo0x020aOxOCOOrffa&.C&bS4(gdb)\/x<0KbfTre744:(gdb)克/xh0xb(fffe74a:(zdb)工/x¥0xbffft74c:(gdb)x/xb0^bfffe753:(gdb)工/xv0^bf£fc754:(gdb)x/xgOKbfffe758:|doubleb--10.5:r限o.<rrrr8c>oo0x020aOxOCOOrffa&.C&b0x40OxbfBccccdOxQOcS4ff4bfffe77a5、(選做)設(shè)計一個C語言程序,輸出一個整數(shù)對應(yīng)的有符號值和無符號值。源碼:#include<stdio.h>#include<math.h>intsumn(chara[200]){浙江大學(xué)城市學(xué)院計算學(xué)院浙江大學(xué)城市學(xué)院計算學(xué)院intb[200];intlen=0;for(inti=0;a[i]!='\0';i++){if(a[i]>='0'&&a[i]<='9'){b[i]=a[i]-'0';)elseif(a[i]>='A'&&a[i]<='F'){b[i]=a[i]-'A'+10;)len++;)intsum=0;intk=0;for(intj=len-1;j>=0;j--){sum二sum+b[j]*pow(16,k);k++;)returnsum;)intmain(void){charnum[20];inta[20];intremain[10000];printf(”請輸入要顯示的數(shù)據(jù)格式為:程序參數(shù),如./display0x27\n");while(1){gets(num);intflag=0;intpos=0;浙江大學(xué)城市學(xué)院計算學(xué)院if(num[0]='0'&&num[1]='x'){flag=1;if(num[2]=='-'){pos=1;for(inti=0;num[i]!='\0';i++){num[i]=num[i+3];))else{for(inti=0;num[i]!='\0';i++){num[i]=num[i+2];)))if(num[0]=='-'){pos=1;for(inti=0;num[i]!='\0';i++){num[i]=num[i+1];))intsum=0;if(flag==0){for(inti=0;num[i]!='\0';i++){a[i]=num[i]-'0';sum二sum*10+a[i];))into=0;intlen=0;if(flag==1){浙江大學(xué)城市學(xué)院計算學(xué)院for(inti=0;num[i]!='\0';i++){len++;)sum=sumn(num);)intk=0;charq[11];q[0]='0';q[1]='x';for(inti=2;i<10;i++){q[i]='0';)charhex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};if(pos==1){sum=128+sum;}intt=sum;intj=9;while(t>0){q[j]=hex[t%16];t=t/16;j-;}if(pos==0){printf("Hex:");for(inti=0;i<10;i++){printf("%c",q[i]);}printf("Signed:%dUnsigned:%d\n",sum,sum);浙江大學(xué)城市學(xué)院計算學(xué)院else(printf("Hex:");for(inti=0;i<9;i++){printf("%c",q[i]);printf("Signed:%dUnsigned:%d\n",-sum,sum+128);運行結(jié)果:文件的端輯3查看的蟒⑴標(biāo)簽的幫助⑷[rocLuidealhost-]=gcc pdisip]ny-kLJ=e99-1n/tup/ccB州wRe:Infunction,min":displays!(,text+€x1.53)!rarninE'the-sets'functianis-dfirrE^rousandshouldnotboused.roDtflila-Ealhost./dlaplay國楣人更顯示的數(shù)據(jù)格式為】程序整數(shù).如0>;270^27Signed:39Signed:39Unsdgmd二Signed::27Unsigned:2727Eki;:Ox£H]OOOLIl.R6、編寫程序得出float和double類型的精度(計算機專業(yè)必做,軟件工程專業(yè)選做);源代碼:,#include=:stdioh>rintTiiainivuid){floati=l-.123123412345123456712345678123456189;doublej=L12312341234S1234S67123456731234S6789printf("float:%.30f\n1,.1i).;printf("doiihle;.30f"?j)運算結(jié)果:浙江大學(xué)城市學(xué)院 計算學(xué)院root@localhost::^ —□X文件⑹編瑁⑤查看?終端①標(biāo)猥⑥幫助心,root^'-3C31llQ-St--EtcLBWtl3?£~Q0rootwlocfelho-st--./lcs110float:1.12312-3407363891601562500000000doub:c:l,1號12341254512'-i4"29SS46]:"第105[root?:oc±ihost2=|根據(jù)初始值和輸出值的比較得出,float的精度約為7位,double的精度約為16位7、(選做)設(shè)計一個C語言程序,輸出一個浮點數(shù)的IEEE754標(biāo)準(zhǔn)的二進(jìn)制表示。源代碼:#include<stdio.h>intmain(void){while(1){floatn;printf("請輸入要輸出的數(shù)字(輸出結(jié)果以二進(jìn)制表示)\n");scanf("%f",&n);intflag=0;if(n<0){flag=1;n=-n;)printf("Floatingpointvalue:%.9f\n",n);inta=(int)n;inttwo[100];floatb;b=n-a;inti=0;intlen=0;while(a){浙江大學(xué)城市學(xué)院計算學(xué)院two[i]=a%2;a=a/2;i++;len++;)intpoint=len;into[100];for(inti=0;i<len;i++){o[i]=two[len-i-1];)for(i=len;i<24;i++){o[i]=(int)(b*2);b=2*b-(int)(b*2);)intex[8]={0};point二point-1+127;intk=7;while(point){ex[k]=point%2;point=point/2;k--;}printf("BitRepresentation=");printf("%d”,flag);for(intj=0;j<8;j++){printf("%d",ex[j]);}for(intj=1;j<24;j++){printf("%d",o[j]);浙江大學(xué)城市學(xué)院計算學(xué)院printf("sign=%dexponent=",flag);for(intj=0;j<8;j++){printf("%d",ex[j]);)printf("fraction』');for(intj=1;j<24;j++){printf("%d",o[j]);)printf("\n");printf("\n");))運算結(jié)果:rocaIhost: 一口國文件B羯輯6生看好提端⑴標(biāo)簽?幫助?[rDDtaloca!host gedit 2[rootalocalhosLb—sld氣99[roowlocalhost ,/bI請輸入要輸出的數(shù)字[播出焙果以二進(jìn)制表示j3.14Floatinepointvaluer3.144000105BitRepresentation=01.000000010010001111010111(100(111s4eh=0exponents!DDDD000frMtion-100100011110101110000LL請輸入要輸出的敬字〔輸出結(jié)果以二進(jìn)制表示)1,59FlDatingpotntvalue"1.500000033BitJtepresentation^DO11111

溫馨提示

  • 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

提交評論