本文共 1414 字,大约阅读时间需要 4 分钟。
大多数计算机使用8位的块(字节),作为最小的可寻址的存储单位。存储器中所有可能地址的集合称为虚拟地址空间(virtual address space),是一个概念性映像。实际的实现是将随机访问存储器系统软件结合起来,为程序提供一个看上去统一的字节数组
字长:指明整数和指针数据的标称大小,决定虚拟地址空间的最大大小(即最大表示范围)。对于一个w位的机器,虚拟地址的范围为0~2w-1 ,程序最多访问2w 个字节
位移运算:逻辑右移,在左端补k个0;算术右移,在左端补k个最高有效位的值。
补码(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)=−xw−12w−1+i=0∑w−2xi2i 以最高位 2 w − 1 2^{w-1} 2w−1为周期,计满一个周期则回到原始状态,类似时钟。有个写的清楚,记录一下。 w位补码的表达范围[100…0]~[011…1],即 − 2 w − 1 -2^{w-1} −2w−1~ 2 w − 1 − 1 2^{w-1}-1 2w−1−1有符号数和无符号数之间的转换
将符号数强制类型转换为无符号数只改变数值,不改变位表示。 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,x−2w,x<2w−1x≥2w−1 T2Uw(x)=B2Uw(T2Bw(x))={ x+2w,x,x<0x≥0扩展一个数字的位表示
扩展无符号数:零扩展(zero extension),开头加0 扩展补码数字:符号扩展(sign extension),添加最高有效位的值的副本建议:不要用无符号数!
2019.3.24创建:1-2节,一直以来对于位运算相关的东西都晕得很@A@
2019.3.26:感觉后面的东西暂时用不着,等以后用到了再补吧转载地址:http://myqvb.baihongyu.com/