第二章 信息表示

1虚拟地址

字长:指明指针数据的标称大小。
虚拟地址是以一个字来编码的。
字长决定的最重要的系统参数是虚拟地址空间的最大大小。
32位字长限制虚拟地址空间为4GB 4*10^9 字节。64位字长限制虚拟机地址空间为16EB。

2逻辑运算与位运算

位运算:& | ^ 位运算 0 1
逻辑运算:&& || ! 逻辑运算非0为1,true 0为0 ,false 逻辑运算如果对第一个参数求值就能确定表达式的结果,那么逻辑运算符就不会对第二个参数求值。
移位运算:移位运算从左至右是可结合的 x>>j>>k等价于x>>k>>j
左移:右端补0
右移:逻辑右移 算术右移
逻辑右移:在左端补0
算术右移:左端补k个最高有效位的值 对于有符号数运算有用
C语言标准:几乎所有的编译器/机器组合对有符号数使用算术右移 ,对于无符号数,右移采用逻辑右移。
java标准:x>>k为算术右移,x>>>k为逻辑右移。
移位量k小于数值位数w,如果k>=w,k=k mod w。

3整数表示:

4编码

1无符号数编码

2.补码编码

补码编码,最高位解释为负权,也称之为符号位,权重为-2^(w-1),无符号表示的权重的负数。符号位为1,表示值为负,值为0,表示非负。

补码的范围是不对称的:|Tmin|=|Tmax|+1
原因:一半的位模式(符号位为1的数)表示负数,另一半的位(符号位设置为0的数)表示非负数。因为0是非负数,这意味能表示的正数比负数少一个。
最大的无符号数刚好比补码的最大值的两倍大1:Umax=2Tmax+1
-1和Umax具有同样的位表示,一个全1的串。
c标准没有要求使用补码表示有符号整数,但是几乎所有的机器都是这么做的。
使用补码来编码有符号数,具有图2-9和2-10的典型的取值范围。
java只有有符号数。在java标准中,整数数据类型的取值采用补码表示。在java中单字节数据类型称为byte,而不是char。

3编码转换

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×