CSAPP实验:lab1-Datalab

CSAPP 实验: 1.Datalab



前言

实验资料链接
实验环境:我使用的环境是vscode + wsl,也可以使用虚拟机下载一个纯净的Linux系统,我更建议前一种做法因为更方便。安装第一种环境可以参考这篇文章。
实验步骤:
1.在提供网站内下载实验的handout文件到本地
2.代开vscode的远程服务启用WSL将本地文件复制一份到Linux目录下
3.使用tar xvf hand-out.tar指令解压文件
4.每次完成一个函数都使用make重新编译一下
5.利用 ./btest -f 函数名 测试函数是否正确
6.使用./dlc bits.c测试是否使用了非法字符
7.最后完成后用./driver.pl统计所有函数的得分情况汇总

1. 实验开始

1.1 bitXor

问题描述:

/* 
 * bitXor - x^y using only ~ and & 
 *   Example: bitXor(4, 5) = 1
 *   Legal ops: ~ &
 *   Max ops: 14
 *   Rating: 1
 */

思路:本题是要实现异或,根据异或准则 A ⊕ B = ( A ‾ B ) ∪ ( A B ‾ ) A \oplus B = (\overline{A}B)\cup(A \overline{B}) AB=(AB)(AB), 由于题目限制不能用或,可以想办法转换一下。考虑德摩根定律,记 f 1 = A ‾ B , f 2 = A B ‾ f1 = \overline{A}B, f2 =A \overline{B} f1=AB,f2=AB,则 A ⊕ B = f 1 ∪ f 2 = f 1 ∪ f 2 ‾ ‾ = f 1 ‾ f 2 ‾ ‾ A \oplus B = f1 \cup f2 =\overline{\overline{ f1 \cup f2}} =\overline{\overline{f1}\overline{f2}} AB=f1f2=f1f2=f1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值