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次比较并返回结果的|
不同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
请注意,正确的名称:
是按位和和
按位包含或|
是按位异或^
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