小端和大端的反转

时间:2015-05-14 19:46:43

标签: c++ memory memory-management binary

请问:

((0x10203040 >> 24) & 0xFF) == 0x10

在little-endian和big-endian机器上总是为TRUE?

2 个答案:

答案 0 :(得分:9)

是。字节序仅影响字节在内存中的存储方式。 0x10203040的值始终为270544960,无论它是内存中的第一个还是最后一个字节0x10

无条件借用Endianness上维基百科文章中的图片,无论我们的系统使用哪种布局:

enter image description here enter image description here

0x0A0B0C0D的值仍然相同。

答案 1 :(得分:2)

  

会这样:

 ((0x10203040 >> 24) & 0xFF) == 0x10
     

在little-endian和big-endian机器上总是正确的吗?

是的,它将在两种架构上提供相同的结果。它实际上是一个数学运算,MSB LSB订单将在特定CPU的微代码的引擎下处理。