• 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;  

        }

  • 相关阅读:
    面试题 33 把数组排成最小的数
    面试题32 1的数目
    面试题29 数组中出现次数超过一半的数字
    LeetCode_Combination Sum II
    LeetCode_Combination Sum
    面试题27 二叉搜索树转换为双向链表
    面试题26 复杂链表的复制
    面试题24 二叉搜索树的后序遍历序列
    LeetCode_Binary Tree Inorder Traversal
    省选模拟57 题解
  • 原文地址:https://www.cnblogs.com/blogxiao/p/13729411.html
Copyright © 2020-2023  润新知