切换特定的多个位

时间:2013-09-24 23:21:42

标签: java bit-manipulation bitwise-operators bit

我正在使用int标志来跟踪数据库操作的结果,并且有关于翻转位的问题。我希望能够将标志(或几个标志)传递给将切换这些位的方法。这是我现在使用的方法(flag是当前标志):

private void toggleFlags(int flags) {
    flag = (flag & (flag | (~flag))) ^ flags;
}

它看起来对我有用,但我只是想确保它正在做它应该做的事情。任何人都可以为我确认一下吗?

1 个答案:

答案 0 :(得分:2)

我看到它的方式,你的代码就等于执行这个:

flag = flag ^ flags;

这是一个简单的简单XOR操作,足以切换你想要的特定标志。

为什么这么简单的原因是(flag | (~flag))只会产生一堆二进制1,然后(flag & <a bunch of binary 1s>)当然与flag相同。所以留下的所有陈述都是flag = flag ^ flags