我正在使用int
标志来跟踪数据库操作的结果,并且有关于翻转位的问题。我希望能够将标志(或几个标志)传递给将切换这些位的方法。这是我现在使用的方法(flag
是当前标志):
private void toggleFlags(int flags) {
flag = (flag & (flag | (~flag))) ^ flags;
}
它看起来对我有用,但我只是想确保它正在做它应该做的事情。任何人都可以为我确认一下吗?
答案 0 :(得分:2)
我看到它的方式,你的代码就等于执行这个:
flag = flag ^ flags;
这是一个简单的简单XOR操作,足以切换你想要的特定标志。
为什么这么简单的原因是(flag | (~flag))
只会产生一堆二进制1,然后(flag & <a bunch of binary 1s>)
当然与flag
相同。所以留下的所有陈述都是flag = flag ^ flags