C- 64位值的endian表示



假设我有 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位。

最新更新