如何翻转 MIPS 中的最高有效位?

How do I flip the most significant bit in MIPS?

我正在尝试将 MIPS 中 2 的补码中的数字转换为符号大小。为此,我想我会:

  1. 减去 1
  2. 'Not'这个词
  3. 翻转最高有效位

例如,11111111111111111111111111111001 (0xfffffff9) 将变为 00000000000000000000000000000111 (0x00000007)。

我知道如何执行第 1 步和第 2 步,但不知道第 3 步。有人知道我该怎么做吗?

此外,在 MIPS 中是否有更好的方法将 2 的补码格式转换为符号幅度格式?

如果将值与 0x80000000 异或,最高有效位将翻转。您可以通过与 0x7fffffff.

异或来执行最后两个步骤(保留最高有效位并翻转其他位)