在计算机体系结构中,多字节数据组织有什么用途?
对于多字节数据(例如 **大端** 和 **小端**)的组织,通常使用两种方法。在大端格式中,值的最高有效字节存储在位置 X 中,下一个字节存储在位置 X + 1 中,依此类推。例如,十六进制值 0102 0304H(H 表示十六进制)将从位置 100H 开始存储,如表 (a) 所示。
数据组织:(a) 大端格式和 (b) 小端格式
| 内存地址 | 数据(十六进制) |
|---|---|
| 101 | 01 |
| 102 | 02 |
| 103 | 03 |
| 104 | 04 |
(a)
| 内存地址 | 数据(十六进制) |
|---|---|
| 101 | 04 |
| 102 | 03 |
| 103 | 02 |
| 104 | 01 |
(b)
在小端格式中,顺序相反。最低有效字节存储在位置 X 中,下一个字节存储在位置 X+1 中,依此类推。表 (b) 显示了小端格式中类似的值。
相同的组织可以用于字节内的位。在大端组织中,位 0 是字节的最右位,最左位是位 7。在小端组织中,最左位是位 0,位 7 是最右位。
字节和字的端序组织不会影响 CPU 和计算机系统的性能。只要 CPU 被设计为处理特定的格式,两者都没有优劣之分。主要问题出现在将数据在具有不同端序组织的计算机之间传输时。例如,如果一台具有小端组织的计算机将值 01020304H 传输到一台具有大端组织的计算机,而没有转换数据,则大端计算机将读取该值为 04030201H。
一些程序可以将数据文件从一种格式转换为另一种格式,一些微处理器有特殊的指令来执行转换。多字节字的另一个关注问题是对齐。现代微处理器一次可以读取多个字节的数据。例如,Motorola 68040 微处理器可以同时读取四个字节。
但是,这四个字节必须位于连续的位置,这些位置具有相同的地址,除了两个最低有效位。此 CPU 可以同时读取位置 100、101、102 和 103,但不能读取位置 101、102、103 和 104。这种情况需要两次读取操作,一次用于位置 100(不需要)、101、102 和 103,另一次用于 104、105(不需要)、106(不需要)和 107(不需要)。
对齐简单来说就是将多字节值存储在这样的位置,即它们从也开始多字节读取块的位置开始。在本例中,这意味着从内存位置开始多字节值,这些位置的地址可以被四整除,从而保证可以通过单个读取操作访问四个字节的值。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP