Java:如何在按位异或运算符中计算条件?(^)

Java:如何在按位异或运算符中计算条件?(^),java,bitwise-operators,bitwise-xor,Java,Bitwise Operators,Bitwise Xor,我试图评估以下内容: System.out.println(“+(3!=3 | 2==2 | 3==1”)-返回TRUE System.out.println(“+(3!=3&2==2&3==1))-返回FALSE System.out.println(“+(3!=3^2==2^3==1”)-返回真-如何和为什么 我的理解是: 将返回真实;基于第二次比较(2==2);但它可以做所有的比较;与只进行1次比较并返回结果的|不同 将返回false;即使它在第一次比较时得到结果(3!=3);但它可以做所

我试图评估以下内容:

  • System.out.println(“+(3!=3 | 2==2 | 3==1”)-返回TRUE
  • System.out.println(“+(3!=3&2==2&3==1))-返回FALSE
  • System.out.println(“+(3!=3^2==2^3==1”)-返回真-如何和为什么
  • 我的理解是:

  • 将返回真实;基于第二次比较(
    2==2
    );但它可以做所有的比较;与只进行1次比较并返回结果的
    |
    不同

  • 将返回false;即使它在第一次比较时得到结果(
    3!=3
    );但它可以做所有的比较。不像
    &&
    那样只进行1次比较并返回结果

  • ??它如何评估语句

  • 从左到右进行评估:

    3=3^2==2
    false^true
    为true

    System.out.println(""+(3!=3 | 2==2 | 3==1));
    // System.out.println(""+(false | true | false));
    // System.out.println(""+(    true     | false));
    // System.out.println(""+(true));
    
    true^3==1
    true^false
    ,这是真的

    System.out.println(""+(3!=3 | 2==2 | 3==1));
    // System.out.println(""+(false | true | false));
    // System.out.println(""+(    true     | false));
    // System.out.println(""+(true));
    
    引用,并知道表达式是从左到右计算的:

    对于
    &
    ,如果两个操作数值都是
    true
    ,则结果值为
    true
    ;否则,结果为
    false

    对于
    ^
    ,如果操作数值不同,则结果值为
    true
    ;否则,结果为
    false

    对于
    |
    ,如果两个操作数值都是
    false
    ,则结果值为
    false
    ;否则,结果为
    true

    请注意,正确的名称:

    • 是按位和
    • |
      按位包含或
    • ^
      是按位异或
    XOR是一种“异或声明”。一般工作原理: 以这两个二进制数为例:

    0 0 1 1 0 1
    0 1 1 0 1 1
    - - - - - - XOR
    0 1 0 1 1 0
    
    只有当比较的两个布尔值中有一个为真时,XOR才会返回真

    因此,在布尔比较的情况下(逻辑表):


    在您的具体情况下,这意味着:

    ( 3!=3  ^ 2==2   ^ 3==1)
    ((false ^ true)  ^ 3==1)
    (       true     ^ 3==1)
    (       true     ^ false)
    true
    

    它是java中的按位异或运算符,当一个数字以二进制形式写入时,其结果为1表示不同的位值(即1^0=1),0表示相同的位值(即0^0=0)


    首先它计算(3!=3^2==2)为false,然后将false(从上一步开始)^false(3==1)计算为true。

    这里使用的不是按位运算符,而是逻辑异或;按位异或是另一个问题3
    false^true^false==true
    。计算所有条件。在数字上,
    ^
    是按位异或。在布尔型上,它是逻辑异或。我是这样说的:。但是名称令人困惑。那么&&和&| | |和|@fatherazrael之间的区别是什么呢?如果它们应用于布尔值,则没有区别。但是
    &
    |
    也可以用于数字。现在就理解它。发现的唯一区别是条件的执行及其终止
       ^  |  true | false
    ----------------------
    true  | false | true
    ----------------------
    false | true  | false
    
    ( 3!=3  ^ 2==2   ^ 3==1)
    ((false ^ true)  ^ 3==1)
    (       true     ^ 3==1)
    (       true     ^ false)
    true