2.1 信息存储

大部分计算机使用8位的块(或者字节)来作为最小的可寻址的存储器单元。机器级程序将存储器视为一个非常大的字节数组,称之为虚拟存储器。存储器中的每一个字节由唯一的一个地址(address)来标识,所有可能地址的集合称之为虚拟地址空间(virtual address space)

2.1.1 十六进制表示法

一个字节有8位,用二进制表示就是 00000000(2)-11111111(2) ,用十进制表示是0(10)-256(10),用十六进制表示是00(16)-FF(16)

Untitled

<aside> 💡 2的n次幂➡️十六进制表示

Untitled

</aside>

<aside> 💡 十进制➡️十六进制

Untitled

</aside>

2.1.2 字数据大小

每台计算机都有一个字长(word size),指明整数和指针数据的标称大小(nominal size),字长决定系统中最重要的参数就是虚拟地址空间的最大大小

<aside> 💡 字长为w位的机器,虚拟地址范围为0-2^w-1

</aside>

计算机和编译器使用不同的方式来编码数字,比如说不同长度的整数和浮点数,从而支持多种数据格式。

Untitled

程序员应该力图使他们的程序在不同的计算机和编译器上可移植,可移植的其中一个方面就是使程序对不同的数据类型的确切大小不那么敏感

<aside> 💡 char*补充说明

Untitled

</aside>

2.1.3 寻址和字节顺序

对于跨多个字节的程序对象,我们必须建立两个规则:这个对象的地址是什么;我们怎样在存储器中对这些字节进行排序

小端法

从低有效字节到高有效字节的顺序存储对象

大端法

从高有效字节到低有效字节的顺序存储对象

对于一个十六进制的数0x01234567: