Endian表示64位值
假设我unsigned long long x = 0x0123456789ABCDEF
。
以下哪项是正确的? (我只能validation第一个):
- 在32位小端处理器上,它将在内存中显示为
67 45 23 01 EF CD AB 89
。 - 在64位小端处理器上,它将作为
EF CD AB 89 67 45 23 01
出现在内存中。 - 在32位大端处理器上,它将在内存中显示为
01 23 45 67 89 AB CD EF
。 - 在64位大端处理器上,它将在内存中显示为
01 23 45 67 89 AB CD EF
。
第一个是错的。 在ia32上,至少布局是EF CD AB 89 67 45 23 01
。
其他都是正确的。
小端表示最低有效位在第一个字节中,而大端表示最低有效位在最后一个字节中:
0x0123456789ABCDEF大端是0x01,0x23,0x45 ……
0x0123456789ABCDEF小端是0xEF,0xCD,0xAB …
处理器的原生单词endianess和size是无关紧要的; 记忆中的外观由端序决定。
我要说32位解决方案非常适合编译器。 只要大小是预期的,它就可以选择代表它缺乏本地支持的类型。
64位的我同意是正确的。