我正在对汇编 MIPS(32 位)进行一些练习,但我真的不明白左移 2 是如何工作的。我将添加几个示例,以便更好地解释它。
- 指导是0x91050014
我必须获取最后 16 位,然后将它们扩展到 32 位。
所以我采用 0014,由于 MSB 是零,这意味着它是一个正数,所以我将其扩展到 32 位,如下所示:0x00000014
之后,我必须向左应用2的移位,因此(我使用[]进行删除,{}用于添加):[00]0000 0000 0000 0000 0000 0000
0001 0100{00}
我可以得出结论是0x00000050
一旦最后 16 个字节不是正数,我就会遇到问题,如以下示例所示:
- 指导是0x10A6FFEC
我采用FFEC,由于MSB是F,这意味着它是一个负数,所以我将其扩展到32位,如下所示:0xFFFFFFEC
现在我发现自己有这个: 1111 1111 1111 1111 1111 1111 1110 1100
而且我不明白如何应用这种转变。
提前谢谢。
同样的方式
1111 1111 1111 1111 11111111 1110 1100
将是
[11]11 1111 1111 1111 11111111 1110 1100{00}
所以它是
1111 1111 1111 1111 11111111 1011 0000
0xffffffb0