CSAPP Lab

110 阅读1分钟

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

异或的推导:

XY=XY+XY=XY+XY+XX+YY=(X+Y)(X+Y)=(X Y)XYX\oplus Y = \overline{X}Y + X\overline{Y} = \overline{X}Y + X\overline{Y} + X\overline{X} + Y\overline{Y} = (X + Y)(\overline{X} + \overline{Y}) = \overline{(\overline{X} \space \overline{Y})}\overline{XY}

德摩根律:

XY=X+Y\overline{XY} = \overline{X} + \overline{Y}
X+Y=X Y\overline{X + Y} = \overline{X} \space \overline{Y}

使用 C 语言 操作符仅使用~&表示异或,如下:

int bitXor(int x, int y) {
	return ~(x & y) & ~(~x & ~y);
}
操作符

~! :

  • ~ 按位取反,例如:~10100011 = 01011100
  • ! 非操作,例如:x != 0 \rightarrow !x = 0; x = 0 \rightarrow !x = 1

^ : x ^ x = 0 通过这个特性,可以通过异或实现一些常见的操作符及判断,且性能有提升

负数 : -x = ~x + 1,例如:

  • 1 \rightarrow -1 : ~0x00000001 + 1 = 0xFFFFFFFE + 1 = 0xFFFFFFFF (-1)

移位操作 :

  • << 补 0,暂无特殊功能
  • >> 分为算数右移和逻辑右移,>>x位可屏蔽最低的 x 位,可判断符号位 s,浮点数的指数位 exp等等...
    • 算术右移高位补 0
    • 逻辑右移高位补符号位(最高位)

条件表达式x?y:z :

F=XZ+XYF = \overline{X}Z + XY
二进制相关

32位:

  • Tmin = 0x80000000
  • Tmax = 0x7FFFFFFF

Tmin = Tmax + 1

~ Tmin = Tmax

  • Umin = 0x00000000
  • Umax = 0xFFFFFFFF
IEEE 浮点数表示
V=(1)sM2EV = (-1)^s*M*2^E
E=ebias 或 1biasE = e - bias \space 或 \space 1 - bias

以 32 位为例:bias=127bias = 127

31 30 ... 23 22 ... ... 0 位
| s |  exp  |    frac   | (最高位s 符号位,2330位为阶码位exp 8位,低23位为尾数frac

有三种类型的值:

  1. 特殊值:exp 全为 1,frac 全 0 则为\infty,若 符号位 s 为 0 则表示 + \infty,若为 1 则表示 - \infty;frac 不全为 0 则表示 NaN
  2. 非规格化的值:exp 全为 0,此时的 E=1bias=126  M=0.fracE = 1 - bias = -126 \space\space M = 0.frac
  3. 规格化的值:exp 至少有一位为 1,此时E=ebias  M=1.fracE = e - bias \space\space M = 1.frac

E23E \ge 23时,此时浮点数小数位为 0

E<23E < 23时,此时浮点数有小数位

非规格化能表达的最小指数范围为21292^{-129}

练习相关 :

howManyBits 二分思想移位 设计巧妙