orl*_*rlp 44 computer-science endianness
在大约40年的二进制计算机科学之后,为什么今天仍然使用小端和大端?是否有算法或存储格式与另一个更好地工作?如果我们都切换到一个并坚持下去,那不是更好吗?
Art*_*ius 31
添加两个数字(在纸上或机器中)时,从最低有效数字开始,朝最高有效数字方向前进.(许多其他操作也是如此).
在具有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世界更兼容.哪个对我好.
小智 14
Little Endian让类型转换更容易.例如,如果您有一个16位数字,您可以简单地将相同的内存地址视为指向8位数字的指针,因为它包含最低的8位.因此,您不需要知道您正在处理的确切数据类型(尽管在大多数情况下您仍然知道).
Big Endian有点人性化.比特存储在内存中,因为它们按逻辑顺序出现(最重要的值是第一个),就像任何人类使用的数字系统一样.
在很多很多抽象层的时代,这些论点不再重要.我认为我们仍然有两个主要原因是没有人想要转换.这两种系统都没有明显的原因,那么为什么如果你的旧系统工作得很好呢?