为什么有些处理器制造商决定使用
- 小端
- 大端
- 中端
- 还有其他人吗?
?
我听说如果一个数字是负数还是正数,大端可以更快地找出,因为那个位是第一个。(这在现代 CPU 上无关紧要,因为无法再访问单个位。)
为什么有些处理器制造商决定使用
?
我听说如果一个数字是负数还是正数,大端可以更快地找出,因为那个位是第一个。(这在现代 CPU 上无关紧要,因为无法再访问单个位。)
小端序的好处是可以使用相同的地址以任意长度读取变量。
例如,可以将 32 位变量读取为 8 位或 16 位变量,而无需更改地址。如今,这可能带来的好处有限,但在汇编器和内存有限的时代,它可能是一个显着的优势
除了使用本机 CPU 字节序或处理指定的文件字节序之外,大字节序或小字节序没有特别的好处。
big endian 和 little endian 并存的原因是不同的 CPU 制造商使用不同的约定来表示多字节数据,并且当时没有标准出现。
使用 CPU 的字节顺序(无论大小)可以让您在算术上获得速度优势:您可以直接在内存中添加、减去等多字节整数。
在文件格式中使用预定义的、规定的字节序(无论大小)可以让您在任何系统上读取文件,而不管其他系统的 CPU 的字节序如何。具有正确字节序的系统可以更快地读取文件(如果正确编写和优化读取例程),但即使具有错误字节序的系统也可以读取它。通常,速度差异可以忽略不计(除了具有大量整数的非常大的文件),因此最好首先测量优化读取例程的最大可能速度增益。
某些文件格式(例如 TIFF)支持两种字节序。在这种情况下,最好使用 CPU 的字节序生成文件,假设文件将在同一台机器或类似机器上进行后处理。
在 little endian 中,您不必费心更改地址,但在 big endian 中,您必须:http://www.noveltheory.com/techpapers/endian.asp
我实际上不知道在现代 CPU 中,小端序是否比大端序有优势。我天真地认为切换地址会消耗 CPU 皮瓦的功率 :)
某些操作受益于让某个值的一部分在另一部分之前可用。当添加两个太大而无法一次读取的无符号数或二进制补码数时,可以在高位可用之前计算结果的低位,但反之亦然,这意味着小端顺序在那里是有利的。访问串行闪存芯片时,行解码只能在定义行的所有位(通常除了最低有效位 8-12 位,具体取决于芯片)都可用时开始,这意味着大端顺序是有利的那里。