信息的表示和处理
有三种重要的数字表示:
- 无符号
表示大于或者等于0的数字 - 补码
表示可以为正或者为负的数字 - 浮点数
表示实数的科学计数法的以二为基数的版本
计算机的表示法使用有限数量的位来对一个数字编码,因此,当结果太大以至于不能表示时,某些运算就会溢出。
整数表示虽然只能编码一个相对较小的数值范围,但是这种表示是精确的;而浮点数虽然可以编码一个较大的数值范围,但是这种表示只是近似的,且由于表示的精度有限,浮点运算是不可结合的。
十进制转十六进制
如果一个数可以表示成2的非负整数n次幂时,即 x=
2
n
2^{n}
2n,n可以写成 i + 4j (0
≤
\leq
≤ i
≤
\leq
≤ 3),这个数x既可以转换成开头十六进制数字1( i=0 ),2( i=1 ),4( i=2 )或者8( i=3 ),后面跟着j个十六进制0
比如:
- 2 9 2^{9} 29 = 2 1 + 4 ∗ 2 2^{1 + 4 * 2} 21+4∗2 = 0x200
- 2 19 2^{19} 219 = 2 3 + 4 ∗ 4 2^{3 + 4 * 4} 23+4∗4 = 0x80000
- 2 17 2^{17} 217 = 2 1 + 4 ∗ 4 2^{1 + 4 * 4} 21+4∗4 = 0x20000
- 2 5 2^{5} 25 = 2 1 + 4 ∗ 1 2^{1 + 4 * 1} 21+4∗1 = 0x20
字长决定的最重要的系统参数就是虚拟地址空间的最大大小。也就是说,对于一个字长为w位的机器而言,虚拟地址的范围为0 ~
2
w
−
1
2^{w}-1
2w−1 ,程序最多访问
2
w
2^{w}
2w个字节。
这句话不太好理解,可以用字长为8位,画图说明:
深入理解计算机系统笔记: