实验二 数据表示实验

上传人:鲁** 文档编号:445820413 上传时间:2022-09-02 格式:DOCX 页数:15 大小:317.62KB
返回 下载 相关 举报
实验二 数据表示实验_第1页
第1页 / 共15页
实验二 数据表示实验_第2页
第2页 / 共15页
实验二 数据表示实验_第3页
第3页 / 共15页
实验二 数据表示实验_第4页
第4页 / 共15页
实验二 数据表示实验_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《实验二 数据表示实验》由会员分享,可在线阅读,更多相关《实验二 数据表示实验(15页珍藏版)》请在金锄头文库上搜索。

1、深圳大学实验报告课程名称:计算机系统(2)实验项目名称: 数据表示实验学院:专业:师:报告人:学号:班级:实验时间:2017年3月31日实验报告提交时间:2017年4月13日教务处制实验目标:、1. 了解各种数据类型在计算机中的表示方法2. 掌握C语言数据类型的位级表示及操作二、实验环境:1,计算机(Intel CPU)2. Ubuntu Linux 操作系统三、实验内容与步骤1、根据bits.c中的要求补全以下的函数:int bitXor(int x, int y);int tmin(void);int isTmax(int x);nt allOddBits(int x);int negat

2、e(int x);int isAsciiDigit(int x);int conditional(int x, int y, int z);int isLessOrEqual(int x, int y);int logicalNeg(int x);int howManyBits(int x);unsigned float_twice(unsigned uf);unsigned float_i2f(int x);int float_f2i(unsigned uf);2、在Linux下测试以上函数是否正确,指令如下:*编译:./dlc bits.c*测试:make btest./btest四、实验

3、结果1. int bitXor(int x, int y);由离散数学逻辑命题逻辑可得,异或如下:rootubuntu /home/yangllibin_2014040329/Dektop/datalab-hand int bitXorftnt x, int y) (曲Ireturn2. int tmin(void);最小值为0x8000 0000,由1左移31即可得到:root (ubuntu: /ham e/ya nglibin_20140403 29/D esktop/datalab-liand h* tntn - return nintnun twos conplenent tnteg

4、er* Legal ops r ! A | t * Max opsi 4* Rating: 1tnt tFiin(void) (return3. int isTmax(int x);最大值为0x7fff ffff,加一会变为0x10000000,而此数加上本身后会变为0,本身加本身为0的数只有0和0x1000 0000,故而再将0xffffffff排除即可rootubuntu /hame/yanglibin_2014040329/Desktop/datalab-liand 国 * 2/* islnax - returns 1 if x is the naxinun, two1s conplen

5、ent* and 0 otherwtse* Legal ops: ! & A | t* Max ops: IO* Rating: 27int tsTpidx( tnt x) return ! ()&! (x+1);4. int allOddBits(int x);只有所有奇数位为1的数(二进制),与0x5555 5555进行&运算才会得到0,故 而需要得到0x5555 5555即可,将0x5分别左移4、8、16、24得到4个数,然 后将这四个数和0x5相加即可得到0x5555 5555root)ubuntu: /home/yangObinZDI4040329/Desktop/datalab-h

6、and 1X :dlLOridBits - return 1 If all odd-numbered bits tn wor* Examples allOddBtts(xlFFFFFFFD)=日,allDddBttsCOxA* Legal ops: 1 & A | + Ml * Max ops: 12* Rating: 2tht aLlOddlBits(int x) retu rn ! (x| (B5+ (S5S)+(S5lfi)+(S5Z4);5.int negate(int x);取反加1即可* / intregate(int x) return;negate - return -x Ex

7、ample: negatef1)= Legal ops: !Max ops; 5Rating: 26. int isAsciiDigit(int x);x需要= 0且= 9,将x与临界点作差,然后判断符号位的为0还是1即 可root)ubuntu: /home/yangUbfn_2014040329/Desktop/datalab-hand 4 国* 4】)::V; , * IsAsciiDigit - return 1 if 0x30 = x = 0x39 (ASCII codes to 9)* Example:isAsciiDigit(0x35)=1* isAsciiDigit(0x3a)

8、=EL* tsAscttDtgtt(0x05)=9* Legal ops: ! & A | + * Maxops:15* Rating: 3一,-kf. int isAsciiDigit(int x) return ! (x+48+l)31)&! ! (x+58+l)31);7. int conditional(int x, int y, int z);首先使用t=!x,当x为0时返回1,当x不为0时,返回0,根据题意得到( &y)|( _ &z),首先空1,当x不为0,即t=0时,需要t转换为Oxffffffff (-1),当 t=1时,需要将t转换为0x0(0),将t-1即可,得到空1为“

9、!x+1+1”,同理空 2 为“!x+1”root)ubuntu: /home/yanglbln_2-014040329/Des.ktop/data lab-hand0 conditional. - sane as x ? y : z* Exanple: condittondl(2,4,5) = 4* Legal ops: ! A | +* Max ops: 15* Rating: 3*)Bl tnit condtttonalfLnt x, tnt y# Lnt z) ( J return ( !x+14-l)&y) | (!x+l)iz);8. int isLessOrEqual(int x

10、, int y);直接用y-x可能会超出int的表示范围,故而:A、在x与y同号的情况下转换为p=y-x=0,然后p符号位(p31)&1为0则 返回1,符号位1则返回0;B、 异号时,只要x=0,就要返回0,否则返回1,由(x31)&1能达到该效果;C、c=a+b可作为x,y同号异号的判断。9. int logicalNeg(int x);令y=x+1,考虑x与y的符号位:A. 当x为0时,两者符号位都为0;B. 当x=0x8000 0000时,两者符号位都为1;C. 否则,两者符号位为01或10;D. 根据离散数学的真值表得出(x)&(y).10. int howManyBits(int x

11、);rootubuntu: /home/yangUbtn_2014040329/Desktop/datalab-hand 国* HO) /* howNanyBtts - return the ntntnun nunber of bits required to /i*twos conplement* Exanples: howManyBits( 12) = 5* howManyBits(298) = 10* howManyBits(-5) = 4* howManyBits(O) = 1* howManyBits(-1) = 1* howManyBits( 0x80000000) = 32* L

12、egal ops: ! & A | + * Max ops: 90* Rating: 4Ik */F J int howManyBits(int x) int s,sl,s2,s4,s8,sl6;tnt tl=( ( ! X)31)31;int t2=( !x)31)31;ISQlint op=xA(x31);S16=( ! ! (op16)c8)op=ops8;s4=( ! ! (op4) )2;Aop=ops4;=s2=( ! ! (op2)c&0x7f=8OOO0O)=O) return uf;elseelseexp=exp+0x00809090;if(exp)&0x7f800090)

13、frac=0:result are passed as uns level reBoth the argument they are to be interpreted as the bit singLe-precision floating point value When argument is NaN, return argument Legal ops: Any tnteger/unsigned operations tncLp=f) if)=&)frac=fracl;else12. unsigned float_i2f(int x);A. 用(二进制)科学计数法表示int型数时,尾数位数=23,例如0x00008001,此时将0x8001 左移 24-16=8 位得到 ftac,而 exp 则 127+16-1;B. 当尾数位数23时,找到位数最末一位记作xi,然后对尾数的舍去分3种情况考虑,初 始化c=0:a)当xi-1=1且xi-2、xi-3x0都为0 (即要偶端舍入情况),且xi=1,令c=1(此处frac若是全为1,则会导致frac+c超出范围,这是bug,当还是通过了);b)当 xi-1=1 且 xi-2、xi-3x0不都为 0,令 c=1 (与 a 存在同样的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号