java | (按位或) & (按位与) || (逻辑或) && (逻辑与) ^(异或) ⊙ (同或) 区别以及理解
以下所有的举例都以十进制5 和 3 转成二进制如下 ,
5 :0101
3 : 0011
按位或(|):
按照位置同为假(0) 则是假(0) ;其中一个为真(1)则为真(1)。
5 | 3 ==》0101 | 0011 ==》0111 ===》(十进制)7
按位执行步骤:
0 | 0= 0;
1 | 0 = 1;
0 | 1= 1;
1 | 1 = 1;
结果:0111
按位与(&):
按照位置 同为真(1)则是真(1);否则 一真一假 或者都为假 则是假(0);
5 | 3 ==》0101 | 0011 ==》0111 ===》(十进制)1
按位执行步骤:
0 & 0= 0;
1 & 0= 0;
0 & 1= 0;
1 & 1= 1;
结果:0001
同或 (⊙ ):
5 ⊙ 3: 按位操作,不相同则位真(1),相同则为假
5 ⊙ 3 ==》0101 ^ 0011 ==》0110 ===》(十进制)9
按位执行步骤:
0 ⊙ 0= 1;
1 ⊙ 0= 0;
0 ⊙ 1= 0;
1 ⊙ 1= 1 ;
结果:1001
异或 (^):
5 ^ 3: 按位操作,不相同则位真(1),相同则为假
5 ^ 3 ==》0101 ^ 0011 ==》0110 ===》(十进制)6
按位执行步骤:
0 ^ 0= 0;
1 ^ 0= 1;
0 ^ 1= 1;
1 ^ 1= 0;
结果:0110
逻辑或(||):
a|| b
a 或 b 任何一个条件为真则为真,否则都为假
if( a || b ){
return 1; // 条件 1 : a=true , b=false; 2 : a=false, b=true; 3 : a=true,b=true;
}
逻辑或(&&): 当第一个为 false 则第二个不用判断,当第一个为true 第二个还要判断
a && b
a 或 b 任何一个条件为真则为真,否则都为假
if( a && b ){
return 1; // 条件 1 : a=true, b=true;
}