深入理解计算机系统(CSAPP) 第二章学习笔记

文章目录

    • 1.信息存储
    • 2.整数表示
    • 3.整数运算

1.信息存储

大多数计算机使用8位的块(字节),作为最小的可寻址的存储单位。存储器中所有可能地址的集合称为虚拟地址空间(virtual address space),是一个概念性映像。实际的实现是将随机访问存储器系统软件结合起来,为程序提供一个看上去统一的字节数组

字长:指明整数和指针数据的标称大小,决定虚拟地址空间的最大大小(即最大表示范围)。对于一个w位的机器,虚拟地址的范围为0~2w-1 ,程序最多访问2w 个字节
深入理解计算机系统(CSAPP) 第二章学习笔记_第1张图片
寻址和字节顺序:最低有效字节在最前面为小端法,反之大端法。双端法则可以自由配置成小端或大端。当进行网络应用编程时需遵守字节顺序的规则,以防止接收端字节反序。

位移运算:逻辑右移,在左端补k个0;算术右移,在左端补k个最高有效位的值。

2.整数表示

补码(two’s-complement)编码
B 2 T w ( x ⃗ ) = − x w − 1 2 w − 1 + ∑ i = 0 w − 2 x i 2 i B2T_{w}(\vec x) = -x_{w-1}2^{w-1} + \sum_{i=0}^{w-2}x_{i}2^{i} B2Tw(x )=xw12w1+i=0w2xi2i
以最高位 2 w − 1 2^{w-1} 2w1为周期,计满一个周期则回到原始状态,类似时钟。有个博客写的清楚,记录一下。
w位补码的表达范围[100…0]~[011…1],即 − 2 w − 1 -2^{w-1} 2w1 2 w − 1 − 1 2^{w-1}-1 2w11

有符号数和无符号数之间的转换
将符号数强制类型转换为无符号数只改变数值,不改变位表示。
U 2 T w ( x ) = B 2 T w ( U 2 B w ( x ) ) = { x , x < 2 w − 1 x − 2 w , x ≥ 2 w − 1   T 2 U w ( x ) = B 2 U w ( T 2 B w ( x ) ) = { x + 2 w , x < 0 x , x ≥ 0 U2T_{w}(x) = B2T_{w}(U2B_{w}(x)) = \begin{cases} \mathcal x, &\mathcal x<2^{w-1}\\ \mathcal x-2^{w}, &\mathcal x \ge 2^{w-1} \end{cases}\\ ~\\ T2U_{w}(x) = B2U_{w}(T2B_{w}(x))= \begin{cases} \mathcal x+2^{w}, &\mathcal x<0\\ \mathcal x, &\mathcal x \ge 0 \end{cases} U2Tw(x)=B2Tw(U2Bw(x))={x,x2w,x<2w1x2w1 T2Uw(x)=B2Uw(T2Bw(x))={x+2w,x,x<0x0

扩展一个数字的位表示
扩展无符号数:零扩展(zero extension),开头加0
扩展补码数字:符号扩展(sign extension),添加最高有效位的值的副本

建议:不要用无符号数!

3.整数运算


2019.3.24创建:1-2节,一直以来对于位运算相关的东西都晕得很@A@
2019.3.26:感觉后面的东西暂时用不着,等以后用到了再补吧

你可能感兴趣的:(操作系统)