




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
浙江大學城市學院 計算學院浙江大學城市學院實驗報告課程名稱 計算機系統(tǒng)原理實驗 實驗項目名稱 實驗三數據的機器級表示 實驗成績指導老師(簽名)日期一、實驗目的:1、通過無符號數和帶符號整數之間的相互轉換來理解無符號數和補碼整數的表示;2、了解IEEE754浮點數在機器中的應用,特別是一些特殊值的處理。二、實驗步驟:1、用32位補碼表示的機器上編譯并執(zhí)行以下程序,記錄程序的執(zhí)行結果,并解釋原因。T^mcludc<stdliintmainfk1{¥inti-2:474的6會:,■■■■J-2147483648<2147483647);^printfr/d'n’〔i7147483&47)尸prijitfC'%d^\21474£3647-1-<>1474£3647):圖3-1運行結果:浙江大學城市學院計算學院浙江大學城市學院計算學院root@loca[host:- -口文件6編瑁?查看配)終端①標簽⑧1幫助但)[root?localhost?]#geditrootoilocalhost"]#gcctestsac-otest3test3ac:Infunctionnisin=1-lcslS.^S:警告-:這個小數常量僅ISOCW中是無符號的3sL丸「4:警告:這個小數常量僅ISOC90中是無符號的[rootOlocalliasl二二,/les13011[rojtwhjcalhosL,=對運算結果的解釋:第一個結果:因為在ISOC90標準中,編譯器將-2147483648分為兩個部分來處理。首先將2147483648看成無符號整型,其機器數為0x80000000,然會對其取負,結果仍為0x80000000,還是將其看成無符號整型,其值仍為21474833648,因此前者大于后者。第二個結果:由于i為int型變量,因此這兩個數皆為帶符號數,前者小于后者。第三個結果:編譯器首先將2147483647看成帶符號整型,然后對其取負,得到-2147483647,然后對其-1得到-2147483648,因此前者大于后者。2、編寫程序,計算表2.1中的表達式,說明運算類型(無符號、帶符號),得到運算結果,并說明為什么是這樣的運算結果(參考第二章習題8);源代碼:浙江大學城市學院 計算學院運算結果:1口root@laicalhGst:--□X文件B編輯口查看⑦終端①標蜜嘮幫助助[TDDtwloca1host a/tC3t411010111[raaLftlocalbosL”#對運算結果的解釋:1.0和0U都是無符號數,值相等-1和0都為帶符號數,因此前者小于后者浙江大學城市學院計算學院0后加上U表示無符號數,因此比較時前者大于后者-2147483647-1的計算結果為一個int型整數,為帶符號數,因此前者大于后者。加上U的數都為無符號數,因此前者小于后者2147483648U在經過int強制類型轉換后,變?yōu)閹Х柕?2147483648,因此前者大于后者兩個數皆為帶符號數,因此前者大于后者數據轉化為無符號數,前者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叫當len=0時,執(zhí)行sum函數的for循環(huán)時會發(fā)生AccessViolation,即段錯誤異常.但是,當參數len說明為int型時,sum函數能正確執(zhí)行,為什么?編寫程序測試并分析。原因分析:因為當len的類型為unsigned時,len-1發(fā)生了下溢出,因此出現段錯誤。而int的表示范圍包括了-1,因此正常運行。測試程序:Unsigned:浙江大學城市學院計算學院Int:浙江大學城市學院計算學院4、在32位計算機中運行一個C語言程序,在該程序中出現了以下變量的初值,請手工算出它們對應的機器數(用十六進制表示)(第二章習題9),寫出詳細的計算過程,然后用程序驗證在內存中這些變量的機器數,并截圖顯示。(1)intx=-32768(2)shorty=522(3)unsignedz=65530(4)charc=’@’(5)floata=-1.1(6)doubleb=10.5
浙江大學城市學院計算學院浙江大學城市學院計算學院手工計算過程:l.Intx=-32768二進制原碼(32位)10000000000000001000000000000000補碼:除符號位外,每位取反,末位加一11111111111111110111111111111111+1=11111111111111111000000000000000轉化為十六進制數:ffff8000shorty=522二進制原碼(16位) 0000001000001010補碼:0000001000001010十六進制:020aunsignedz=65530二進制原碼(32位)00000000000000001111111111111010補碼:00000000000000001111111111111010十六進制:0000fffacharc='@'@的ASCII碼為64二進制原碼(8位):01000000補碼:01000000十六進制數:40floata=-1.1二進制原碼(32位)符號位:1(負)階數0->二進制00000000->偏移01111111->階碼:01111111尾數:00011001100110011001101得到二進制機器數:10111111100011001100110011001100十六進制:bf8cccch(與程序驗證有出入)Doubleb=10.5二進制1010.1規(guī)格化后:1.0101*2八11符號位:0階數:11階碼:000000000000011+011111111111111=100000000000010尾0101000……000(52位)結果即:01000000000000100101000……000(52位)十六進制即4025000000000000(與程序驗證有出入)編程驗證源碼:
浙江大學城市學院計算學院查看內存結果截圖:FDOt@locaIhnst:z浙江大學城市學院計算學院查看內存結果截圖:文件的蛹靠拶查看M終端①標饕@幫助也)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、(選做)設計一個C語言程序,輸出一個整數對應的有符號值和無符號值。源碼:#include<stdio.h>#include<math.h>intsumn(chara[200]){浙江大學城市學院計算學院浙江大學城市學院計算學院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(”請輸入要顯示的數據格式為:程序參數,如./display0x27\n");while(1){gets(num);intflag=0;intpos=0;浙江大學城市學院計算學院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){浙江大學城市學院計算學院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);浙江大學城市學院計算學院else(printf("Hex:");for(inti=0;i<9;i++){printf("%c",q[i]);printf("Signed:%dUnsigned:%d\n",-sum,sum+128);運行結果:文件的端輯3查看的蟒⑴標簽的幫助⑷[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國楣人更顯示的數據格式為】程序整數.如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)運算結果:浙江大學城市學院 計算學院root@localhost::^ —□X文件⑹編瑁⑤查看?終端①標猥⑥幫助心,root^'-3C31llQ-St--EtcLBWtl3?£~Q0rootwlocfelho-st--./lcs110float:1.12312-3407363891601562500000000doub:c:l,1號12341254512'-i4"29SS46]:"第105[root?:oc±ihost2=|根據初始值和輸出值的比較得出,float的精度約為7位,double的精度約為16位7、(選做)設計一個C語言程序,輸出一個浮點數的IEEE754標準的二進制表示。源代碼:#include<stdio.h>intmain(void){while(1){floatn;printf("請輸入要輸出的數字(輸出結果以二進制表示)\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){浙江大學城市學院計算學院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]);浙江大學城市學院計算學院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");))運算結果:rocaIhost: 一口國文件B羯輯6生看好提端⑴標簽?幫助?[rDDtaloca!host gedit 2[rootalocalhosLb—sld氣99[roowlocalhost ,/bI請輸入要輸出的數字[播出焙果以二進制表示j3.14Floatinepointvaluer3.144000105BitRepresentation=01.000000010010001111010111(100(111s4eh=0exponents!DDDD000frMtion-100100011110101110000LL請輸入要輸出的敬字〔輸出結果以二進制表示)1,59FlDatingpotntvalue"1.500000033BitJtepresentation^DO11111
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖南省醴陵市第三中學2025年初三第一次大聯(lián)考語文試題含解析
- 長沙醫(yī)學院《巖土測試技術》2023-2024學年第二學期期末試卷
- 山東省青島43中2024-2025學年初三暑假末結業(yè)考試物理試題含解析
- 碳酸飲料市場細分策略與目標群體定位考核試卷
- 木材切削振動抑制技術考核試卷
- 煤炭清潔利用考核試卷
- 商務保險培訓(壽險的意義和功用)
- 搪瓷企業(yè)產品研發(fā)與市場適應性考核試卷
- 塑料鞋制造與智能制造技術考核試卷
- 油氣田設備故障診斷與預測性維護考核試卷
- 鋼軌超聲波探傷70°探頭詳解
- 柜式七氟丙烷氣體滅火系統(tǒng)安裝與綜合項目施工專項方案
- 2021年4月自考00808商法試題及答案含解析
- 2022聚脲防水涂料應用技術規(guī)程
- 2024年四川成都金牛天府環(huán)境管理有限公司招聘筆試參考題庫含答案解析
- T-CITSA 20-2022 道路交叉路口交通信息全息采集系統(tǒng)通用技術條件
- 《商務數據分析與應用》實訓教學大綱
- 管理溝通-原理、策略及應用(第二版)教學課件7
- 牙周病科普講座課件
- 《AE基礎培訓教程》課件
- 建立良好的生活習慣和健康生活方式
評論
0/150
提交評論