java切换特定的多个位
我正在使用int
标志来跟踪数据库操作的结果,并且有一个关于翻转位的问题。我希望能够将一个标志(或几个标志)传递给将切换这些位的方法。这是我现在使用的方法(flag
是当前标志):
private void toggleFlags(int flags) {
flag = (flag & (flag | (~flag))) ^ flags;
}
对我来说,它看起来很有效,但我只是想确保它正在做它应该做的事情。有人能帮我确认一下吗
你可以在下面搜索框中键入要查询的问题!
我正在使用int
标志来跟踪数据库操作的结果,并且有一个关于翻转位的问题。我希望能够将一个标志(或几个标志)传递给将切换这些位的方法。这是我现在使用的方法(flag
是当前标志):
private void toggleFlags(int flags) {
flag = (flag & (flag | (~flag))) ^ flags;
}
对我来说,它看起来很有效,但我只是想确保它正在做它应该做的事情。有人能帮我确认一下吗
# 1 楼答案
在我看来,您的代码相当于执行以下操作:
这是一个简单的异或操作,足以切换所需的特定标志
之所以如此简单,是因为
(flag | (~flag))
只会产生一堆二进制1,然后(flag & <a bunch of binary 1s>)
当然与flag
相同。所以这句话只剩下flag = flag ^ flags