假设我有'numb'=1025 [00000000 00000000 00000100 00000001]
代表的数字:
在Little-Endian机器上:
00000001 00000100 00000000 00000000
在Big-Endian机器上:
00000000 00000000 00000100 00000001
现在,如果我在10位上应用左移(即:numb << = 10),则应该具有:
[A]在Little-Endian机器上:
正如我在GDB中注意到的那样,Little Endian进行了3个步骤的左移:[我展示了'3'个步骤,只是为了更好地理解处理过程]
请不要 在Big-Endian Convention中:
00000000 00000000 00000100 00000001
应用左移:
00000000 00010000 00000100 00000000
在Little-Endian中再次表示结果:
00000000 00000100 00010000 00000000
[B]。在Big-Endian机器上:
00000000 00010000 00000100 00000000
我的问题是:
如果我直接在Little Endian Convention上应用Left Shift,它应该给出:
numb
:
00000001 00000100 00000000 00000000
numb << 10
:
00010000 00000000 00000000 00000000
但实际上,它给出了:
00000000 00000100 00010000 00000000
仅为了获得第二个结果,我已经在上面显示了三个假设步骤。
请向我解释以上两个结果为何不同的原因:的实际结果numb << 10
与预期结果不同。