实验题目:LAB2-datalab
实验目的:填写bits.c文件中尚未完成的各个函数的内容,但是,本实验要求只使用有限数量、规定的操作符。
实验环境:个人电脑、linux发行版本
实验内容及操作步骤:
-
共享文件
步骤:
1.在虚拟机内添加路径:进入虚拟机软件,点开工具栏上方虚拟机,点击设置,选择选项,查看共享文件夹,点击添加,下一步
2.在主机路径中点击浏览,然后将主机中要共享的文件夹添加到目录下。
3.点击启用此共享,完成。
4.在虚拟机中找到munu文件夹,进入,即可找到共享的文件夹。然后将文件夹剪切至桌面即可使用。
二、填写函数
1.bitAnd - x&y using only ~ and |
Example: bitAnd(6, 5) = 4
Legal ops: ~ |
Max ops: 8
Rating: 1
函数内容:
函数讲解:这个函数是想用~|完成两数字相与,这个利用德摩根对偶律即可
2.getByte - Extract byte n from word x
* Bytes numbered from 0 (LSB) to 3 (MSB)
* Examples: getByte(0x12345678,1) = 0x56
* Legal ops: ! ~ & ^ | + << >>
* Max ops: 6
* Rating: 2
函数内容:
函数讲解:这有个32位的数字,但是他是16进制的,从低位0开始,一字节一字节的数,数到需要的n就输出这个位置(这个位置不是指比特位)对应一字节的数字。这个的思路就是先算移动的位数(比特位),是n*2^3个位,(这里左移一位就是移动了1*2^3个位数,左移两位就是2*2^3个位数)然后x左移相应位数,再跟0xff相与得到这个字节的数字。
3.logicalShift - shift x to the right by n, using a logical shift
* Can assume that 0 <= n <= 31
* Examples: logicalShift(0x87654321,4) = 0x08765432
* Legal ops: ! ~ & ^ | + << >>
* Max ops: 20
* Rating: 3
函数内容: