实验二 数据表示实验_第1页
实验二 数据表示实验_第2页
实验二 数据表示实验_第3页
实验二 数据表示实验_第4页
实验二 数据表示实验_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、深圳大学实验报告课程名称:计算机系统(2)实验项目名称:数据表示实验学院:专业:指导教师:罗秋明报告人:学号:班级:实验时间:2017年3月31日实验报告提交时间:2017年4月13日教务处制深圳大学学生实验报告用纸一、实验目标:了解各种数据类型在计算机中的表示方法掌握C语言数据类型的位级表示及操作二、实验环境:计算机(IntelCPU)UbuntuLinux操作系统eraaLubuiiitu:/hosuddjti-df&wafdForyanLLblfi_2ifiliiiMBaa?:Idrurahempi占ndasdnlntstrAtorfuserproo-t-)rus-esudo*c.Dww

2、nBtSetnan3u4a口口tfordrldils.三、实验内容与步骤1、根据bits.c中的要求补全以下的函数intbitXor(intx,inty);inttmin(void);intisTmax(intx);ntallOddBits(intx);intnegate(intx);intisAsciiDigit(intx);intconditional(intx,inty,intz);intisLessOrEqual(intx,inty);intlogicalNeg(intx);inthowManyBits(intx);unsignedfloat_twice(unsigneduf);uns

3、ignedfloat_i2f(intx);intfloat_f2i(unsigneduf);2、在Linux下测试以上函数是否正确,指令如下:*编译:./diebits.c*测试:makebtest./btest四、实验结果1.intbitXor(intx,inty);由离散数学逻辑命题逻辑可得,异或如下until:口me/yangUbIn_2014040329/Dektop/datalab-hBndtntbitXorftntx,inty)returny)&-(2.inttmin(void);最小值为0 x80000000,由1左移31即可得到intisTmax(intx);最大值为0 x7f

4、ffffff,加一会变为0 x10000000,而此数加上本身后会变为0,本身加本身为0的数只有0和0 x10000000,故而再将0 xffffffff排除即可rootubuntu/home/yangUbin_2014040329/Desktop/datalab-hand“国*2严isTnaxreturns1ifxisthemaxiFium,twoscomplementand0otherwtseLegalop5:!&A|tMaxops:10Rating:2*/tnttsT(nax(tn七x)return!(xA(xM)&!(x+1);4.intallOddBits(intx);只有所有奇数位

5、为1的数(二进制),与0 x55555555进行&运算才会得到0,故而需要得到0 x55555555即可,将0 x5分别左移4、8、16、24得到4个数,然后将这四个数和0 x5相加即可得到0 x55555555root)ubuntu:/home/yangUbin_2014040329/Desktop/datalab-hand1XaLlOddBits(intx)严*intreturn!(x|(S5+(asB)+(65lfi)+(fi5Z4);elLOddBits-return1ifallodd-nunberedbitstnworExamplesallOddBtt(9xFFFFFFFD)=直.a

6、llOddBits(OxA+百=Legalops:!-&Maxops:12Rating:25.intnegate(intx);取反加1即可gtubuntu:/hgm/yangllbin_2014040329/Dsktop/datalab-hand切negat亡-fturn-x-1.+Example:negate(1)=Legalops:!A|Maxops;5*Rating:2*/tntregia七已(Intx)return(十1);6.intisAsciiDigit(intx);x需要=0且v=9,将x与临界点作差,然后判断符号位的为0还是1即可rootubuntu:/horme/yarigL

7、ibbi-201404032P/De$ktop/datalab-hRndg国*斗”深圳大学学生实验报告用纸/*isAsciiDigit-return1if0 x30Maxops:15Rating:3丁v_intIsAsciiDigitfintx)r1return!(x+48+l)31)&!(x+58+l)31);7.intconditional(intx,inty,intz);首先使用t=!x,当x为0时返回1,当x不为0时,返回0,根据题意得到(_&y)l(&z),首先空1,当x不为0,即t=0时,需要t转换为Oxffffffff(-1),当t=1时,需要将t转换为0 x0(0),将t-1即

8、可,得到空1为“!x+1+1”,同理空2为“!x+1口ot)ubuntu:/hame/yanglib-in_2014040329/Des.ktop/datalab-hand“conditional-saneasx?y;zExanple:conditiDnalf2,4,S)=4Legalops:!A|十宜笛Maxops:16Rating:3*/5tcondttional(tntx,inty,tntz)return(!I(!x+l)&z)isLessOrEqual(intx,inty);直接用y-x可能会超出int的表示范围,故而:A、在x与y同号的情况下转换为p=y-x=0,然后p符

9、号位(p31)&1为0则返回1,符号位1则返回0;B、异号时,只要x=0,就要返回0,否则返回1,由(x31)&1能达到该效果;C、c=a+b可作为x,y同号异号的判断。ubuntu/home/yangUbrn_2014D40329/Desktop/datalab-hand打国*深圳大学学生实验报告用纸*IsLessOrEquaL-ifx31);return(c&(a&l)|C(c)&p);tsLess-OrEqual(intx,inty)in七in七intintthenreturn1,else厂Etun0ExampleiisLessOrEqual(4S)=1.Legalopsi&A|+xMx

10、ops:24Rating:39.intlogicalNeg(intx);令y=x+l,考虑x与y的符号位:当x为0时,两者符号位都为0;当x=0 x80000000时,两者符号位都为l否则,两者符号位为0l或l0;D.根据离散数学的真值表得出(x)&(y)./4root)ubunku:/home/yangLlbrn_2014040329/Deskto-p/datahb-hand“VIntlogicalNeg(intx)return(logtcalhleg-inpLenentthe!operator,usingoilof七h亡legaloperatorsexcept!Examplesilogic

11、alNeg(3)=0,logicalNeg(0)=1Legalops:|+ccMexops:12Rat:ing:A10.inthowManyBits(intx);rootubuntu:/home/yangUbtn_2014040329/Desktop/datalab-hand深圳大学学生实验报告用纸En基Legalops:Maxops:90Rating:4howManyBits(0 x80000000)=32howNanyBtts-returnthentntnunnunberofbitsrequiredtotwosconplementExanples:howManyBits(12)=5howM

12、anyBits(298)=18howManyBits(-5)=4howManyBits(O)=1howManyBits(-1)=1严*/inthoMHanyBits(intx)tnt5,51,52,54,58,516;tnt(!X)31)31;tntt2=(!-x)31)31;intop=xA(x31);S16=(!(op16)c8)op=opsS;s4=(!(op4)l);op=opsl;s=sl4-s24-s4+s84-s16+2;return|(t2)&(tl&l)|11.unsignedfloat_twice(unsigneduf);深圳大学学生实验报告用纸roak)ubuntu;/h

13、口m/yNnglibiii-2014D482时口“kt口p/dztn诒b-hndh国*elseexp=exp+Ox00809090;if(exp)&Ox7fS9O09O)=O)frac=0;return(exp|frac|s);Boththeargumen七andlresultarepassedasunstgnedit七heyaretobeinterpretedasthebi七levelrepresentcsingLe-precisionfloatingpointvalues*WhenargumentisNaN,returnargumentLegalops:Anytnteger/unsigne

14、doperationstncL*|I1Mexops:30Rating:4*/unsignedfloattwtcefunsigneduf)unsignedtntexp=0 x7f800000&uf;unsignedtntfrac=0 x007fffff&uf;unsignedtnts=0 x&000(&900&uf;if(exp)&Ox7f:8O&O0O)=O)returnuf;elseif(exp=fl)Lf(eDcafl4flflaeeftuf)=e)frac=fraced;elseexp=9x90S(90900;frac=frac-=9)+(159-shtttiLeft)23)+flag;

15、sign=Ox8OOOOG09;absX=;X;tf(aftershlft&ox0irr)0 xoioo)elsetfC(aftershtft8OKOiffJssaxooJ)flag=l;afterShtft=at)sX;/countshiftleftandafter_shtftwhile(1)tmpdftershtft;afterShift=l;shiftLeft+i-;if(tnp&0 x80000000)break;4/unsignedfloat_L2f(intx)nsign亡dshiftLeftD;unsignedafterShift,tmpflag;nstgn亡dabsx=x;uns

16、ignedsigri=0;/specialcaseif(x=D)return0;/ifk&,sign=1009.absx=-xif(x0)-intfloat_f2i(unsigneduf);exp为0,x=(-l)%*0.frac*2人(-126);否则x=(-l)r*l.frac*2人(exp-127)分情况考虑:根据float转为int是向0舍入的情况,当exp=0或者expv127(由exp-12723)-127)=0,根据x=(-1)As*1.frac*(exp-127),exp_sign=0,x=l.x22x21.x0-x=1;exp_sign=1,x=1x22.x21.x0-x=1

17、x22;exp_sign=2,x=1x22x21.x20.x0-x=1x22x21;exp_sign=23,x=1x22x21x20.x0-x=1x22x21.x0exp_sign=30,x=1x22x21x20 x0-x=1x22x21x000(共31位)exp_sign=32,x=1x22x21x20 x0-x=1x22x21x000(共32位),此时,因为int为有符号,只有0 x000000000能被表示出来,其他都是NAN;当exp_sign=(exp23)-127)=33,NANrootubuntu:/home/yanglfbin_2014040329/Desktop/datala

18、b-handg国*创)深圳大学学生实验报告用纸严float_f2i”Returnbit-levelequivatentofexpression(int)forfloatingpointargumentf*Argumentispassedasunsignedint,butitistobeinterpretedasthebittevetrepresentationosingle-precisionfloatingpointvalue*Anythingoutofrange(includingNaNandinfinity)shouldOxSOOOOOOOuLegalops:Anyintege/unsi

19、gnedoperationstncl*|,&*Maxops:30Rating:4碎/intfloat_f2t(unsigneduf)unsignednum=0 x8OOOOOOO;intx=(uf&0 x0O7fffff)AOx0O8O0O0O;intorder=0;order=(uf&0 x7f800000)23;if(order15S)returnnun;tf(order150)已turnorderISO)+1;elsereturn(x(150-order)+1;elsetf=(order150)returnx(orderl50);elsereturnx(150order);深圳大学学生实验报告用纸root)ubuntu:/home/yangUbin_2014040329/Desktop/datalab-hand佛*/*howManyBits-returntheninimunnunberofbitsrequiredtotwo1scomplenentExamples:howHanyBltsfl?)=5howManyBtts(298)=10howManyBtts(S)=4howManyBtts(O)=1howManyBtts(1)=1howManyBtts(0 x89090909)=32Legalops:J&A|+Max

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论