请问:
((0x10203040 >> 24) & 0xFF) == 0x10
在little-endian和big-endian机器上总是为TRUE?
答案 0 :(得分:9)
是。字节序仅影响字节在内存中的存储方式。 0x10203040
的值始终为270544960
,无论它是内存中的第一个还是最后一个字节0x10
。
无条件借用Endianness上维基百科文章中的图片,无论我们的系统使用哪种布局:
0x0A0B0C0D
的值仍然相同。
答案 1 :(得分:2)
会这样:
((0x10203040 >> 24) & 0xFF) == 0x10
在little-endian和big-endian机器上总是正确的吗?
是的,它将在两种架构上提供相同的结果。它实际上是一个数学运算,MSB LSB订单将在特定CPU的微代码的引擎下处理。