文章目录
1.环境搭建
1.1 Ubuntu虚拟机搭建
首先,我们需要在浏览器上下载VMware Workstation Pro和Ubuntu(下载方法可以百度,百度方法十分全,本文不做介绍),下载完后,我们就需要配置可以运行我们csapp lab1环境
1.2 后续环境搭建
首先,我们需要安装make ,我们只需要打开终端,然后输入以下命令:
sudo apt -y install make
之后,我们就可以在终端输入make来执行了。这里就表示我们安装了make。
接下来我们安装gcc,在终端输入以下指令就可以安装:
sudo apt install gcc -y
由于这个csapp lab比较老,是搭建在32位系统上的,因此我们接下来需要搭建32位环境,输入以下指令:
sudo apt-get install gcc-multilib
这样我们就可以成功运行csapp lab了。
2. CSAPP Lab1
2.1 bitxor
对题目分析可以知道,这是一道异或题,而且只能使用 ~和& ,并且它还给我们举了一个例子,输入4和5两个数,最后得到1。 那我们可以先代入进去试一下,当x=4,y=5时,我们得到的是1,但当我们互换一下后,就变成了错误的。当我通过查询资料后,发现,这道题运用的是德摩根律,果然数学是最基础的科学!
还有就是想要对其进行异或操作,那么也就是同1得0,同0得0,不同得1,因此,我们就要先求出x和y同为0的位:~( ~x & ~y)
接下来求出x和y同为1的位:~(x & y)
那么答案也就出来了
2.2 tmin
这道题目考察的是二进制最小的补码整数,那我们就需要学习一下何为补码:我们想要了解何为补码,那就需要先知道何为模运算,就是用你所提供的数除以模后,所得的余数就是补码,为了更好的理解何为模运算。我们可以举一个简单易懂的例子,就是钟表的例子:我们都知道,钟表的一圈只有12个大刻度,那么当时间超过12时,我们该怎样知道其指到几呢,比如15,我们用15除以它的模也