假设我有 unsigned long long x = 0x0123456789ABCDEF
。
以下哪项是正确的?(我只能验证第一个):
- 在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
。
其他是正确的。
小endian表示最不重要的位位于第一个字节中,而大端表示最不重要的位在最后一个字节中:
0x0123456789abcdef Big Endian是0x01,0x23,0x45 ...
0x0123456789abcdef Little Endian是0xef,0xcd,0xab ...
本地单词endianess和处理器的大小无关紧要;记忆中的外观由末日决定。
我会说32位解决方案完全取决于编译器。它可以选择代表这种类型,只要大小是预期的。
我同意正确的64位。