字节顺序

编辑
本词条由“匿名用户” 建档。
目录

字节顺序

编辑

(了解如何以及何时删除此模板消息)

在计算中,字节顺序,也称为字节性别,是计算机内存中数字数据字的字节顺序或序列。 字节顺序主要表示为大端(BE)或小端(LE)。 big-endian 系统将一个字的最高有效字节存储在最小的内存地址中,将最低有效字节存储在xxx的内存地址中。 相反,小端系统将最低有效字节存储在最小地址。 双端是许多计算机体系结构支持的功能,这些体系结构在数据获取和存储或指令获取中具有可切换的字节顺序。其他顺序通常称为中间字节序或混合字节序。

字节顺序也可以用来描述位在通信信道上传输的顺序,例如,通信信道中的大端先传输最高有效位。 在其他情况下很少使用位字节序。

词源

编辑

Danny Cohen 在 1980 年发表的 Internet Experiment Note 中将术语 big-endian 和 little-endian 引入计算机科学中用于数据排序。

形容词 endian 起源于 18 世纪英裔爱尔兰作家乔纳森·斯威夫特 (Jonathan Swift) 的作品。 在 1726 年的小说《格列佛游记》中,他描绘了小人国的教派之间的冲突,这些教派分为从大端或小端打破煮鸡蛋的壳。 他称它们为 Big-Endians 和 Little-Endians。 科恩在他 1980 年笔记的附录中明确指出了与格列佛游记的联系。

概览

编辑

计算机将信息存储在各种大小的二进制位组中。 每个组都分配有一个编号,称为其地址,计算机使用该编号访问该数据。 在大多数现代计算机上,具有地址的最小数据组为八位长,称为字节。 较大的组包含两个或更多字节,例如,一个 32 位字包含四个字节。 计算机可以通过两种可能的方式对较大组中的各个字节进行编号,从两端开始。 这两种类型的字节顺序都广泛用于数字电子工程。 新设计的初始字节序选择通常是任意的,但后来的技术修订和更新会延续现有的字节序以保持向后兼容性。

在内部,任何给定的计算机都将同样良好地工作,而不管它使用什么字节序,因为它的硬件将始终使用相同的字节序来存储和加载其数据。 出于这个原因,程序员和计算机用户通常会忽略他们正在使用的计算机的字节顺序。 然而,当将数据移动到计算机外部时,字节顺序可能会成为一个问题——例如在不同计算机之间传输数据,或者程序员从内存转储中调查计算机内部数据字节——并且使用的字节顺序与预期不同。 在这些情况下,必须理解和说明数据的字节顺序。

字节序示例

这两张图显示了两台使用不同字节序的计算机如何存储一个值为 0x0A0B0C0D 的 32 位(四字节)整数。 在这两种情况下,整数都被分成四个字节,0x0A、0x0B、0x0C 和 0x0D,这些字节存储在内存中的四个连续字节位置,从地址为 a 的内存位置开始,然后是 a + 1,a + 2,和a+3。big endian和little endian的区别在于整数的四个字节的存储顺序。

左图显示了一台使用大端字节序的计算机。 这将从地址 a 处的最高有效字节 0x0A 开始存储整数,并以地址 a + 3 处的最低有效字节 0x0D 结束。

右图显示了一台使用小端字节序的计算机。 这从地址 a 处的最低有效字节 0x0D 开始存储整数,并以地址 a + 3 处的最高有效字节 0x0A 结束。

由于每台计算机都使用相同的字节序来存储和检索整数,因此两台计算机的结果将相同。 当内存由字节而不是整数寻址时,或者当内存内容在具有不同字节顺序的计算机之间传输时,可能会出现问题。

字节顺序

Big-endianness 是网络协议中的主要顺序,例如在 Internet 协议套件中,它被称为网络顺序,首先传输最高有效字节。 相反,小端顺序是处理器架构(x86、大多数 ARM 实现、基本 RISC-V 实现)及其相关内存的主要顺序。 文件格式可以使用任一排序; 一些格式使用两者的混合或包含在整个文件中使用哪种排序的指示符。

little-endian 和 big-endian 的样式也可以更普遍地用于表征任何表示的顺序,例如 数字系统中的数字或日期的部分。

内容由匿名用户提供,本内容不代表vibaike.com立场,内容投诉举报请联系vibaike.com客服。如若转载,请注明出处:https://vibaike.com/197294/

(6)
词条目录
  1. 字节顺序
  2. 词源
  3. 概览

轻触这里

关闭目录

目录