为什么使用小端和大端?

时间:2011-01-20 21:20:07

标签: computer-science endianness

为什么在大约40年的二进制计算机科学之后,小端和大端仍在使用今天?是否有算法或存储格式与另一个更好地工作?如果我们都切换到一个坚持它会不会更好?

3 个答案:

答案 0 :(得分:30)

添加两个号码(在纸上或机器中)时,从最低有效数字开始,向最高位数字方向前进。 (许多其他操作也是如此)。

在具有16位寄存器但是8位数据总线的Intel 8088上,小端允许这些指令在第一个存储周期后开始操作。 (当然,一个单词的内存提取应该可以按递减顺序而不是增加,但我怀疑这会使设计复杂一点。)

在大多数处理器上,总线宽度与寄存器宽度相匹配,因此不再具有优势。

另一方面,大端数字可以从MSB开始进行比较(尽管许多比较指令实际上做了一个减法,无论如何都要从LSB开始)。符号位也很容易获得。

  

是否有算法或存储空间   使用一个和更好地工作的格式   另一个更糟糕的是?

没有。这里和那里有一些小优势,但没什么大不了的。

我实际上认为litte-endian更自然和一致:有点重要 2 ^(bit_pos + 8 * byte_pos)。而对于大端,有点意义 2 ^(bit_pos + 8 *(word_size - byte_pos - 1))。

  

如果我们都切换到一个坚持下去会不会更好?

由于x86的主导地位,我们绝对倾向于小端。许多移动设备中的ARM芯片具有可配置的字节序,但通常设置为LE以与x86世界更兼容。哪个对我好。

答案 1 :(得分:13)

Little Endian让类型转换更容易。例如,如果您有一个16位数字,您可以简单地将相同的内存地址视为指向8位数字的指针,因为它包含最低的8位。因此,您不需要知道您正在处理的确切数据类型(尽管在大多数情况下您仍然知道)。

Big Endian有点人性化。比特存储在内存中,因为它们按逻辑顺序出现(首先是最重要的值),就像任何人类使用的数字系统一样。

在很多很多抽象层的时代,这些论点不再重要。我认为我们仍然有两个主要原因是没有人想要转换。这两种系统没有明显的原因,所以如果你的旧系统工作得很好,为什么要改变呢?

答案 2 :(得分:3)

大端和小端都有其优点和缺点。即使一个显然优越(事实并非如此),任何传统架构都无法转换字节序,所以我担心你只需要学习与它一起生活。 / p>