2

鉴于 MSB 已设置,我试图找出一种仅反转二进制数的 MSB 并保持其他位不变的最佳方法。

例如,如果二进制数是 1111

我试过了,只有斧头的前半部分是啊,用00b

and ah, 00b

我得到 0011,你可以看到 MSB 旁边的位在我这样做时也发生了变化

我应该如何只更改最高有效位而不更改其他位?

预先感谢

4

1 回答 1

4

首先,您AND并没有真正反转任何位;它清除了它们。

如果要反转最重要的位,AX可以这样做:

XOR AX,8000h

或者对于最重要的半字节:

XOR AX,0F000h

或最高有效字节:

XOR AX,0FF00h

等等。

于 2013-05-23T05:54:56.607 回答