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;  

    }

posted @ 2020-09-25 15:23  zero_and_one  阅读(1105)  评论(0编辑  收藏  举报