深入理解计算机系统
本文为《深入理解计算机系统》第二章 信息的表示和处理的笔记,只记录了重点和次重点内容
信息的表示和处理
数字表示:
- 无符号编码:大于0或等于0的数字
- 补码编码:有符号整数,可以为正或者为负的数字
- 浮点数编码:表示实数的科学计数法的以2为基数的版本
整数编码数值范围较小,但精确;浮点数编码数值范围较大,但只是近似。
2.1信息存储
字节:最小的可寻址的内存单位
虚拟内存:机器级程序将内存视为一个非常大的字节数组,称为虚拟内存
每个字节都有一个数字(地址)标识,内存中地址的集合称为虚拟内存空间
十六进制:
- 二进制从0000到1111分别对应十六进制从0到F(例如0000对应0,0001对应1……1111对应F)
- 若值x是2的n次幂时(x=2n),x的二进制表示即1后跟n个零(例(64)16=26==(1000000)2)
- 十六进制数字0代表四个二进制0,所以当n表示成i+4j的形式,就可以把x写成以1(i=0时)、2(i=1时)、4(i=2时)、8(i=3时)开头,后面跟j个十六进制的0。(比如2048=211n=3+4*2,得到十六进制表示0x800)。
字数据大小:字长指明数据的标称大小(CPU一次能并行处理的二进制位数),因为虚拟地址是以这样的一个字来编码的,所以字长决定了虚拟地址空间的大小,字长为ω的机器的虚拟地址范围为0~2ω-1
寻址和字节顺序:
对于跨越字节的程序对象(int,float等),必须有两个规则:
- 这个对象的地址是?
大部分机器将多字节对象存储为连续的字节序列,对象的地址为所使用字节中最小的地址。 - 在内存中如何排列这些字节?
大端法:从最高有效字节到最低有效字节的顺序存储
小端法:从最低有效字节到最高有效字节的顺序存储
假设int类型的变量x,位于地址0x100处,它的十六进制值为0x01234567。地址范围0x100~0x103的字节顺序:
大端法 | ||||
---|---|---|---|---|
…… | 0x100 | 0x101 | 0x102 | 0x103 |
01 | 23 | 45 | 67 |
小端法 | ||||
---|---|---|---|---|
…… | 0x100 | 0x101 | 0x102 | 0x103 |
…… | 67 | 45 | 23 | 01 |