深入理解计算机系统data lab

Data Lab

Wercker Wercker Wercker
Thank for watch

实验梗概:

解决比特难题,整数操作问题和浮点问题
比特难题:

名字 描述 评分
bitAnd(x,y) 使用|和~完成x&y 1
getByte(x,n) 从x得到第n字节的数 2
logicalShift(x,n) 使用算数右移完成逻辑右移 3
bitCount(x) x中有多少个1 4
bang(x) 不用!实现!操作符 4

整数操作问题

名字 描述 评分
tmin() 返回最小补码 1
fitsBits(x,n) x能用n bits表示吗 2
divpwr2(x,n) 计算 x/(2^n) 2
negate(x) 不用负号完成取反 2
isPosition(x) x大于0吗 3
isLessOrEqual(x,y) x小于等于y吗 3
ilog2(x) 计算floor(log2(x)) 4

浮点问题

名字 描述 评分
float_neg(uf) 取反 2
float_i2f(x) 计算(float)x 4
float_twice(uf) 计算x*2.0 4

实验指南

完成实验你只需要修改bits.c.配套有btest,dlc和fshow配件。

在本实验中:
不能使用循环,分支语句。只允许使用顺序语句。

只能使用 ! ˜ & ˆ | + << >>(甚至更少)

只能使用小于256的常数。

只能使用int或unsigned,不能使用float,不能类型转换

在每个函数的注释有更清楚的任务要求

工具介绍

btest

这个工具检查bits.c里函数的正确性。(每次修改完bits.c都要重新make)
./btest 检查你的所有答案是否正确
./btest -f bitAnd 检查bitAnd是否正确。

dlc

./dlc bits.c 检查你使用了非法操作符,或过多的

  • 6
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,这里是您要求的回答: 这个问题涉及到计算机系统的实验课程——深入理解计算机系统(CS:APP)的第一个lab任务,也称为Data Lab。这个任务要求学生使用C语言编写函数来实现不同的位级操作,从而深入理解计算机中数字的存储和运算。 ### 回答2: 在Data Lab的第二部分中,我们学习了如何用不超过十六个操作来实现不同的位运算。这些操作包括移位,逻辑运算,比较和掩码等。通过这些操作的实现,我们可以进一步理解底层计算机系统中位运算的实现原理。 在实现这些操作时,我们需要了解底层计算机系统的运算和数据类型。如符号扩展、零扩展和反码等。同时,在编写代码时需要熟练使用位运算的操作符号以及一些基本控制流语句如循环、条件语句等。 除了实现这些基本操作,我们也需要应用这些操作来解决一些实际问题。例如,实现一个函数,将一个十六进制数按位翻转,或是计算一个整数二进制表示中1的数量等。 通过Data Lab的学习,我们深入了解了计算机系统中底层的位运算实现原理,并学会了如何用简洁高效的代码实现这些操作。同时,这些操作也常常被用在各种领域的计算机编程中,对于未来的学习与工作都有很大的帮助。 ### 回答3: 在《深入理解计算机系统lab1:data lab(二)中,我们主要学习了位运算和两个的补码表示。这些知识对于我们了解计算机的原理和编码方式非常重要。 在这个实验中,我们需要完成一些与位运算相关的任务。其中包括: 1. 实现位运算。我们需要用 C 语言实现一些常见的位运算,如与、或、非、异或、左移、右移等。 2. 计算 x 的相反数。 3. 检查 x 是否为零。 4. 判断 x 的符号是否为负数。 5. 计算 x 和 y 的和,但不能使用加法运算。 为了完成这些任务,我们需要对 C 语言数据类型的细节和位运算的机器级实现有一定的了解。例如,我们要了解有符号整数和无符号整数的区别,以及它们在机器上的表示方式。我们还需要理解位运算的计算过程,包括位移的规则、符号扩展和逻辑运算等。 通过这个实验,我们可以更深入理解计算机的工作原理,学会用底层的方式实现高级的运算,掌握常用的位运算技巧。这对于提高编程的效率和代码的可读性都有很大帮助。同时,这也为后续的计算机科学学习打下了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值