数据大小每台计算机都有这样一个称为 字(word) 的数据单位,它用来表示该计算机一次性处理事务的固定长度。一个字的位数称之为 字长(word size) ,是用来指明指针数据的 标称大小(nominal size) 。通常情况下,我们称处理字长为 32 位的 CPU 叫 字长为 位的机器,其虚拟地址的范围为 ~ ,程序最多访问 个字节(Byte)。 在 C 语言中, C 为不同的数据类型分配了相应的字节大小,如下表所示,当然也可能随机器和编译器的不同而有所不同。
所以,我们可以看出,分配的字节数是受到程序是如何编译的影响而变化的。 存储容量单位说到数据大小,不得不简单介绍一下计算机存储容量单位。信息存储单位有位、字节和字等几种,当然还有扩展单位 1 B = 8 bit 1 KB = 1024 B 1 MB = 1024 KB 1 GB = 1024 MB 1 TB = 1024 GB 1 PB = 1024 TB 1 EB = 1024 PB 1 ZB = 1024 EB 1 YB = 1024 ZB 1 BB = 1024 YB 1 NB = 1024 BB 1 DB = 1024 NB 1 CB = 1024 DB 1 XB = 1024 CB 寻址和字节存储顺序对于一个跨越了几个字节的数据对象,这个数据对象所占据的最低地址就规定为该对象的起始地址。例如,对于一个 我们在保存它的值时总是一个字节一个字节地存。当然,这里又引出了一个问题,就是按什么样的字节顺序把这个值放入相应的内存。这里有两种顺序可选: 小端法(little endian) :最低有效字节在最前面。也就是从右至左把每个字节从低地址向高地址依次存入。 大端法(big endian) :最高有效字节在最前面。也就是按我们平常书写的顺序把每个字节从低地址向高地址依次存入。 具体的可以参考上面给出的图。 参考文献: [1] Bryant, Randal E., and David R. O'Hallaron. 深入理解计算机系统 Computer Systems: A Programmer's Perspective. Translated by 龚奕利 and 贺莲, 3rd ed., 机械工业出版社, 2016. 👇每周一到周五晚上21:00更新,期待你的关注👇 |
|