为什么在大约40年的二进制计算机科学之后,小端和大端仍在使用今天?是否有算法或存储格式与另一个更好地工作?如果我们都切换到一个坚持它会不会更好?
答案 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)
Big Endian有点人性化。比特存储在内存中,因为它们按逻辑顺序出现(首先是最重要的值),就像任何人类使用的数字系统一样。
在很多很多抽象层的时代,这些论点不再重要。我认为我们仍然有两个主要原因是没有人想要转换。这两种系统没有明显的原因,所以如果你的旧系统工作得很好,为什么要改变呢?
答案 2 :(得分:3)
大端和小端都有其优点和缺点。即使一个显然优越(事实并非如此),任何传统架构都无法转换字节序,所以我担心你只需要学习与它一起生活。 / p>