深入理解计算机系统---计算机信息存储

来源:互联网 发布:word下载字体 mac 编辑:程序博客网 时间:2024/04/27 02:19

计算机使用8位的块(字节(byte)),来作为最小的可寻址的存储器单位,而不是访问存储器中每个单独的位。机器级程序将存储器视为一个非常大的数组,称为虚拟存储器(virtual memory)。存储器的每个字节都由一个唯一的数字来标识,称为它的地址(address),所有可能地址的集合就称为虚拟地址空间(virtual address space)。这个虚拟地址空间只是一个展现给机器级程序的概念性映像(image)。实际的实现使用的是随机访问存储器RAM(通常说的内存)、磁盘(通常说的硬盘),它们结合操作系统软件,来为程序提供一个看上去统一的字节数组。

每台计算机都有一个字长(word size),它决定了虚拟地址空间的大小。对于一个字长为N位的机器而言,虚拟地址的范围是:0---(2^N)-1,程序最多访问2^N个字节。

目前(2009年)大多数的计算机的字长都是32位。这就限制了虚拟地址空间为4G字节。这也就是为什么32位XP只支持最大4GB内存。


信息在内存中的保存方式是怎样的呢?我们知道字节是最小的可寻址的存储器单位当要保存的信息的长度超过了1个字节时怎么办呢?比如:0x1234567,它是一个int数,占4个字节(32位)。假设系统分配给它0x100-0x103这4个内存空间。

将0x1234567换算成二进制为:1001000110100010101100111,存储时从低位每8位存入一个内存单元。为易于观察将其分割,前面不足位用0补齐:00000001,00100011,01000101,01100111。

这时有2种方式保存:

1.大端法(big endian):从0x100到0x103依次保存:00000001,00100011,01000101,01100111。亦即依次保存:01,23,45,67。

2.小端法(little endian):从0x100到0x103依次保存:01100111,01000101,00100011,00000001。亦即依次保存:67,45,23,01。
观察发现大端法符合我们从左到右的数字书写习惯,但它却不符合,低位内存保存低位数值的规则,小端法则刚好相反。当从内存中取用数据时,用大端法保存的数据从0x100到0x103依次取出,每取出一个字节(也就是一个内存单元)的数据只要加在现有数据的右边就可以了。而用小端法保存的数据,则相应的取出后加在左面。

Intel的处理器都采用小端法.

当存储在磁盘上时字节顺序(endian order)与文件的格式有关,比如windows下的BMP图像用的是little endian。JPEG 用的是Big Endian。

 

IEEE浮点表示

浮点数V=(-1)^s*M*2^E

符号s,为0时表正数,为1时表负数

原创粉丝点击