首页 >> 知识 >> 计算机系统基础之实验一报告位操作&定/浮点数加减法&补码

计算机系统基础之实验一报告位操作&定/浮点数加减法&补码

计算机系统基础之实验一报告位操作&定/浮点数加减法&补码

一、实验目的

加深对定点数补码、无符号数和IEEE754短浮点数标准的理解,加深对定点数和浮点数加减运算的理解。

二、实验原理

1.位操作 2.定点数补码表示 3.浮点数IEEE754表示

三、实验步骤

1、打开vm运行Ubuntu进入lab1-handout.tar所在目录开始实验操作 2、解压代码框架:tar -xvf lab1-handout.tar 3、进入解压后的目录make编译生成可执行文件,看看多了几个文件 4、通过修改bits.c 完成题目 5、做完题后进入vm进行make编译,注意提示信息,看编译是否出错 6、然后通过dlc测试(语法检查):./dlc bits.c (简单语法检查) ./dlc -e bits.c(检查操作运算符是否符合需求) 7、如果步骤6通过后,进行btest测试:./best (检查bits.c文件中所有函数功能,如果失败则给出测试用例) 8、修改答案,通过修改bits.c里的代码,继续进行步骤5、6、7

四、实验内容

1.代码及编程思路

(1)

lsbZero - set 0 to the least significant bit of xExample: lsbZero(0x87654321) = 0x87654320Legal ops: ! ~ & ^ | + >Max ops: 5Rating: 1

思路:x右移一位把最低有效位舍去,再左移把其余的数还原的原位上。

int lsbZero(int x) { x=x>>1; x=x>31);}

(5)

sign - return 1 if positive, 0 if zero, and -1 if negativeExamples: sign(130) = 1 sign(-23) = -1 Legal ops: ! ~ & ^ | + >Max ops: 10Rating: 2

思路:在isNegative的基础上区分正数和0.考虑运算 (!x)的结果。x位0时值为1,非零时值为0。那么 (!(!x))即!!x,运算在x为0时值为0,非零时值为1。这样就能区分0和正数了。也就是 “(负数确定)+(非负数确定)&(0确定)” 。

int sign(int x) { return (x >> 0x1F) | !!x;}

(6)

byteXor - compare the nth byte of x and y, if it is same, return 0, if not, return 1

example: byteXor(0x12345678, 0x87654321, 1) = 1

byteXor(0x12345678, 0x87344321, 2) = 0

Legal ops: ! ~ & ^ | + >

Max ops: 20

Rating: 2

思路:一个字节相当于8个二进制位,通过右移操作并将结果与0xff即255进行与运算,即可取得这一字节的值。异或的特性是若两个数相等,则异或结果为0,利用这一特性即可得出答案。

int byteXor(int x, int y, int n) { int temp = ((x ^ y) >> (n > 1); return x & 0x1; }

(17)

trueThreeFourths - multiplies by 3/4 rounding toward 0,avoiding errors due to overflowExamples: trueThreeFourths(11) = 8 trueThreeFourths(-9) = -6 trueThreeFourths(1073741824) = 805306368 (no overflow) Legal ops: ! ~ & ^ | + >Max ops: 20Rating: 4

思路:首先通过右移一位和右移两位两个操作求得整数部分。然后判断小数部分以及是否是负数。

int trueThreeFourths(int x) { int y=x&0x3; x=x>>2; return (x0x1F)&0x3))>>2);}

2.测试结果截图

五、实验总结

通过这次试验,我得知自己对位的相关操作的理解还不太到位,需要勤学多练,加深理解;部分函数理解不透彻,不能完整实现函数功能,可通过与他人交流、查阅资料得到处理。平时也可以通过自行进行习题演练,增强函数实现和优化方面的技能。除此之外,我更加深刻地了解数据与程序的机器级表示和处理,并加深了解数据类型的转换规则,能够在虚拟机的环境中通过两大测试优化函数功能,实现一些基础运算工程的功能。并且加深了和他人的交流,进一步提升了自学能力。

网站地图