CSAPP Lab - datalab
Datalab
tar命令
tape archive 创建和提取归档文件,常用于压缩和解压文件
基本用法:tar [参数] 归档文件名 文件/目录名
man tar查看参数
常用参数:
-c创建打包文件-t查看打包的文件中有那些文件名-x解压缩-z通过 gzip 进行压缩/解压缩-j通过 bzip2 进行压缩/解压缩-J通过 xz 进行压缩/解压缩-v讲压缩/解压缩过程中正在处理的文件名显示出来-f filename-C 目录特定目录解压缩-p保留备份数据的原本权限和属性-P保留绝对路径--exclude=FILE压缩过程中,忽略 FILE
常用命令:
- 压缩:
tar -jcv -f filename.tar.bz2 [目录] - 查询:
tar -jtv -f filename.tar.bz2 - 解压缩:
tar -jxv -f filename.tar.bz2 -C [目录]
异或 Xor
异或的推导:
德摩根律:
使用 C 语言 操作符仅使用~和&表示异或,如下:
int bitXor(int x, int y) {
return ~(x & y) & ~(~x & ~y);
}
操作符
~与! :
~按位取反,例如:~10100011 = 01011100!非操作,例如:x != 0!x = 0;x = 0!x = 1
^ : x ^ x = 0 通过这个特性,可以通过异或实现一些常见的操作符及判断,且性能有提升
负数 : -x = ~x + 1,例如:
1-1:~0x00000001 + 1 = 0xFFFFFFFE + 1 = 0xFFFFFFFF (-1)
移位操作 :
<<补 0,暂无特殊功能>>分为算数右移和逻辑右移,>>x位可屏蔽最低的 x 位,可判断符号位 s,浮点数的指数位 exp等等...- 算术右移高位补 0
- 逻辑右移高位补符号位(最高位)
条件表达式x?y:z :
二进制相关
32位:
- T
min= 0x80000000 - T
max= 0x7FFFFFFF
T
min= Tmax+ 1
~ Tmin = Tmax
- U
min= 0x00000000 - U
max= 0xFFFFFFFF
IEEE 浮点数表示
以 32 位为例:
31 30 ... 23 22 ... ... 0 位
| s | exp | frac | (最高位s 符号位,23~30位为阶码位exp 8位,低23位为尾数frac
有三种类型的值:
- 特殊值:exp 全为 1,frac 全 0 则为,若 符号位 s 为 0 则表示 + ,若为 1 则表示 - ;frac 不全为 0 则表示 NaN
- 非规格化的值:exp 全为 0,此时的
- 规格化的值:exp 至少有一位为 1,此时
当时,此时浮点数小数位为 0
当 时,此时浮点数有小数位
非规格化能表达的最小指数范围为
练习相关 :
howManyBits 二分思想移位 设计巧妙