假设我用数字'numb'=1025 [00000000 00000000 00000100 00000001]
表示:
在Little Endian机器上:
00000001 00000100 00000000 00000000
在Big Endian机器上:
00000000 00000000 00000100 00000001
现在,如果我在10位上应用左移位(即:number<;<;=10),我应该有:
[A] 在Little Endian机器上:
正如我在GDB中注意到的,Little Endian分3步左移:[我展示了'3'步,以便更好地理解处理过程]
-
对待Big Endian约定中的编号:
00000000 00000000 00000100 00000001
-
应用左移:
00000000 00010000 00000100 00000000
-
用Little Endian再次表示结果:
00000000 00000100 00010000 00000000
[B]. 在Big Endian机器上:
00000000 00010000 00000100 00000000
我的问题是:
如果我直接在小端点上应用左移位
numb
:
00000001 00000100 00000000 00000000
numb << 10
:
00010000 00000000 00000000 00000000
但实际上,它给了我们:
00000000 00000100 00010000 00000000
为了仅实现第二个结果,我在上面展示了三个假设步骤.
请解释为什么以上两个结果不同:numb << 10
的实际结果与预期结果不同.