这会发生什么:
((0x10203040 >> 24) & 0xFF) == 0x10
无论是小端还是大端机器,都应该始终为TRUE吗?
这会发生什么:
((0x10203040 >> 24) & 0xFF) == 0x10
是的。字节序只影响字节如何在内存中存储。无论是第一个还是最后一个字节为 0x10
,0x10203040
的值始终是 270544960
。
借用维基百科字节序文章中的图片,无论我们的系统使用哪种布局:
0x0A0B0C0D
的值仍然是相同的。
will this:
((0x10203040 >> 24) & 0xFF) == 0x10
be always TRUE on both little-endian and big-endian machines?
是的,它将在两种架构上提供相同的结果。实际上,这是一项数学运算,MSB LSB顺序将在特定CPU微代码的控制下处理。