有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java切换特定的多个位

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

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

对我来说,它看起来很有效,但我只是想确保它正在做它应该做的事情。有人能帮我确认一下吗


共 (1) 个答案

  1. # 1 楼答案

    在我看来,您的代码相当于执行以下操作:

    flag = flag ^ flags;
    

    这是一个简单的异或操作,足以切换所需的特定标志

    之所以如此简单,是因为(flag | (~flag))只会产生一堆二进制1,然后(flag & <a bunch of binary 1s>)当然与flag相同。所以这句话只剩下flag = flag ^ flags