计算机组成实验报告0424Word格式文档下载.docx
- 文档编号:4812473
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:12
- 大小:97.99KB
计算机组成实验报告0424Word格式文档下载.docx
《计算机组成实验报告0424Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《计算机组成实验报告0424Word格式文档下载.docx(12页珍藏版)》请在冰点文库上搜索。
代码如下:
//*
*CS:
APPDataLab
*
*<
Pleaseputyournameanduseridhere>
*bits.c-SourcefilewithyoursolutionstotheLab.
*Thisisthefileyouwillhandintoyourinstructor.
*
*WARNING:
Donotincludethe<
stdio.h>
header;
itconfusesthedlc
*compiler.Youcanstilluseprintffordebuggingwithoutincluding
althoughyoumightgetacompilerwarning.Ingeneral,
*it'
snotgoodpracticetoignorecompilerwarnings,butinthis
*caseit'
sOK.
*/
#if0
/*
*InstructionstoStudents:
*STEP1:
Readthefollowinginstructionscarefully.
YouwillprovideyoursolutiontotheDataLabby
editingthecollectionoffunctionsinthissourcefile.
INTEGERCODINGRULES:
Replacethe"
return"
statementineachfunctionwithone
ormorelinesofCcodethatimplementsthefunction.Yourcode
mustconformtothefollowingstyle:
intFunct(arg1,arg2,...){
/*briefdescriptionofhowyourimplementationworks*/
intvar1=Expr1;
...
intvarM=ExprM;
varJ=ExprJ;
varN=ExprN;
returnExprR;
}
Each"
Expr"
isanexpressionusingONLYthefollowing:
1.Integerconstants0through255(0xFF),inclusive.Youare
notallowedtousebigconstantssuchas0xffffffff.
2.Functionargumentsandlocalvariables(noglobalvariables).
3.Unaryintegeroperations!
~
4.Binaryintegeroperations&
^|+<
<
>
>
Someoftheproblemsrestrictthesetofallowedoperatorsevenfurther.
mayconsistofmultipleoperators.Youarenotrestrictedto
oneoperatorperline.
Youareexpresslyforbiddento:
1.Useanycontrolconstructssuchasif,do,while,for,switch,etc.
2.Defineoruseanymacros.
3.Defineanyadditionalfunctionsinthisfile.
4.Callanyfunctions.
5.Useanyotheroperations,suchas&
&
||,-,or?
:
6.Useanyformofcasting.
7.Useanydatatypeotherthanint.Thisimpliesthatyou
cannotusearrays,structs,orunions.
Youmayassumethatyourmachine:
1.Uses2scomplement,32-bitrepresentationsofintegers.
2.Performsrightshiftsarithmetically.
3.Hasunpredictablebehaviorwhenshiftinganintegerbymore
thanthewordsize.
EXAMPLESOFACCEPTABLECODINGSTYLE:
/*
*pow2plus1-returns2^x+1,where0<
=x<
=31
intpow2plus1(intx){
/*exploitabilityofshiftstocomputepowersof2*/
return(1<
x)+1;
*pow2plus4-returns2^x+4,where0<
intpow2plus4(intx){
intresult=(1<
x);
result+=4;
returnresult;
FLOATINGPOINTCODINGRULES
Fortheproblemsthatrequireyoutoimplentfloating-pointoperations,
thecodingrulesarelessstrict.Youareallowedtouseloopingand
conditionalcontrol.Youareallowedtousebothintsandunsigneds.
Youcanusearbitraryintegerandunsignedconstants.
Youareexpresslyforbiddento:
1.Defineoruseanymacros.
2.Defineanyadditionalfunctionsinthisfile.
3.Callanyfunctions.
4.Useanyformofcasting.
5.Useanydatatypeotherthanintorunsigned.Thismeansthatyou
6.Useanyfloatingpointdatatypes,operations,orconstants.
NOTES:
1.Usethedlc(datalabchecker)compiler(describedinthehandout)to
checkthelegalityofyoursolutions.
2.Eachfunctionhasamaximumnumberofoperators(!
~&
)
thatyouareallowedtouseforyourimplementationofthefunction.
Themaxoperatorcountischeckedbydlc.Notethat'
='
isnot
counted;
youmayuseasmanyoftheseasyouwantwithoutpenalty.
3.Usethebtesttestharnesstocheckyourfunctionsforcorrectness.
4.UsetheBDDcheckertoformallyverifyyourfunctions
5.Themaximumnumberofopsforeachfunctionisgiveninthe
headercommentforeachfunction.Ifthereareanyinconsistencies
betweenthemaximumopsinthewriteupandinthisfile,consider
thisfiletheauthoritativesource.
*STEP2:
Modifythefollowingfunctionsaccordingthecodingrules.
*IMPORTANT.TOAVOIDGRADINGSURPRISES:
*1.Usethedlccompilertocheckthatyoursolutionsconform
*tothecodingrules.
*2.UsetheBDDcheckertoformallyverifythatyoursolutionsproduce
*thecorrectanswers.
#endif
/*
*bitAnd-x&
yusingonly~and|
*Example:
bitAnd(6,5)=4
*Legalops:
~|
*Maxops:
8
*Rating:
1
intbitAnd(intx,inty){
return~(~x|~y);
}
*getByte-Extractbytenfromwordx
*Bytesnumberedfrom0(LSB)to3(MSB)
*Examples:
getByte(0x12345678,1)=0x56
!
6
2
intgetByte(intx,intn){
return((x>
(n<
3))&
0x000000ff);
*logicalShift-shiftxtotherightbyn,usingalogicalshift
*Canassumethat0<
=n<
logicalShift(0x87654321,4)=0x08765432
20
3
intlogicalShift(intx,intn){
return~(1<
31>
n<
1)&
(x>
n);
*bitCount-returnscountofnumberof1'
sinword
bitCount(5)=2,bitCount(7)=3
40
4
intbitCount(intx){
return2;
*bang-Compute!
xwithoutusing!
bang(3)=0,bang(0)=1
12
4
intbang(intx){
return1&
(~((x|(~x+1))>
31));
*tmin-returnminimumtwo'
scomplementinteger
inttmin(void){
return1<
31;
*fitsBits-return1ifxcanberepresentedasan
*n-bit,two'
scomplementinteger.
*1<
=32
fitsBits(5,3)=0,fitsBits(-4,3)=1
15
intfitsBits(intx,intn){
return!
(x^((x<
(~n+33))>
(~n+33)));
*divpwr2-Computex/(2^n),for0<
=30
*Roundtowardzero
divpwr2(15,1)=7,divpwr2(-33,4)=-2
intdivpwr2(intx,intn){
intsign=x>
intbias=sign&
((1<
n)+(~0));
return(x+bias)>
n;
*negate-return-x
negate
(1)=-1.
5
intnegate(intx){
return~x+1;
*isPositive-return1ifx>
0,return0otherwise
isPositive(-1)=0.
3
intisPositive(intx){
(!
x|(x>
*isLessOrEqual-ifx<
=ythenreturn1,elsereturn0
isLessOrEqual(4,5)=1.
24
intisLessOrEqual(intx,inty){
*ilog2-returnfloor(logbase2ofx),wherex>
0
ilog2(16)=4
90
intilog2(intx){
*float_neg-Returnbit-levelequivalentofexpression-ffor
*floatingpointargumentf.
*Boththeargumentandresultarepassedasunsignedint'
s,but
*theyaretobeinterpretedasthebit-levelrepresentationsof
*single-precisionfloatingpointvalues.
*WhenargumentisNaN,returnargument.
Anyinteger/unsignedoperationsincl.||,&
.alsoif,while
10
unsignedfloat_neg(unsigneduf){
*float_i2f-Returnbit-levelequivalentofexpression(float)x
*Resultisreturnedasunsignedint,but
*itistobeinterpretedasthebit-levelrepresentationofa
30
unsignedfloat_i2f(intx){
*float_twice-Returnbit-levelequivalentofexpression2*ffor
*theyaretobeinterpretedasthebit-levelrepresentationof
*WhenargumentisNaN,returnargument
unsignedfloat_twice(unsigneduf){
实验结果及分析:
实验分析:
1.正确的通过了8道测试题
收获与体会:
1.在此次实验当中发现自己很多问题,对部分概念还是没有理解透彻,应该加强学习
2.其中第三道的错误问题没有找到原因,在vs2012中运行通过,结果无误,再三寻找问题也没有找到原因,后来在交报告之前突然解决了这问题。
。
原来是不能使用减法,细心看题
实
验成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 组成 实验 报告 0424