华科 - 计算机系统实验报告

发布时间 : 星期二 文章华科 - 计算机系统实验报告更新完毕开始阅读

课 程 实 验 报 告

课程名称: 计算机系统基础

专业班级: 学 号: 姓 名: 指导教师: 报告日期: 年 月 日

计算机科学与技术学院

目录

实验1: ...................................................................................................... 1 实验2: ...................................................................................................... 7 实验3: .................................................................................................... 24 实验总结 ................................................................................................... 34

实验1: 数据表示

1.1 实验概述

实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。 实验目标:加深对数据二进制编码表示的了解。

实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。 实验语言:c。 实验环境:linux

1.2 实验内容

需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。

1)位操作

表1列出了bits.c中一组操作和测试位组的函数。其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。

你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。

表1 位操作题目列表 级别 1 函数名 lsbZero 功能 将x的最低有效位(LSB)清零 将x的第n个字节取反(字节从LSB开始到MSB依次编号为0-3) 比较x和y的第n个字节(字节从LSB约束条件 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 最多操作符数 5 2 byteNot 6 2 byteXor 开始到MSB依次编号为0-3),若不同,则返回1;若相同,则返回0 20 3 logicalAnd x&& y 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 20 3 logicalOr x|| y 20 3 rotateLeft 将x循环左移n位 若x有奇数个1,则返回1;否则,返回0 25 4 parityCheck 20

2)补码运算

表2列出了bits.c中一组使用整数的补码表示的函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。

表2 补码运算题目列表 级别 2 函数名 mul2OK 功能 计算2*x,如果不溢出,则返回1,否则,返回0 计算(x*3)/2,朝零方向取整 计算x –y,如果不溢出,则返回1,否则,返回0 求x的绝对值 约束条件 仅能使用~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 仅能使用! ~ & ^ | + << >> 最多操作符数 20 2 mult3div2 12 3 subOK 20 4 absVal 10

3)浮点数操作

表3列出了bits.c中一组浮点数二进制表示的操作函数。可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。

表3 浮点数操作题目列表 级别 2 函数名 float_abs 功能 返回浮点数‘|f|’的二进制约束条件 仅能使用任何整型/无符最多操作符数 10

联系合同范文客服:xxxxx#qq.com(#替换为@)