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位的我同意是正确的。