• java运算符


    java位运算符包括 
    &(与)       AND 
    |(或)       OR 
    ^(异或)     XOR 
    ~(非)       NOT 

    位移运算符包括 
    >>(右移) 
    <<(左移) 
    >>>(右移,左边空出的位以0填充) 
    顾名思义,位运算符用于位运算,那就只能对整型或者字符型进行运算。而除了~(非)是一元运算符之外其他的都为二元运算符。 

    所有位运算都会把值转为二进制进行运算 

    &(与) 
      运算规则:0&0=0   0&1=0  1&0=0   1&1=1 
      即:两位同时为1时,结果为1,否则为0 

      
    Java代码  收藏代码
    1. int a=(3&5);  
    2. System.out.println(a);  
    3. System.out.println(Integer.toBinaryString(3));   
    4. System.out.println(Integer.toBinaryString(5));   


       结果打印为 
          1 
         011 
         101 
        解析:3的二进制为011,5的二进制为101,与操作结果为001。转为十进制是1。 


    |(或) 
          运算规则: 0|0=0   0|1=1  1|0=1   1|1=1 
         即:参加运算的两个对象只要有一个为1,其结果就为1 

       
    Java代码  收藏代码
    1. int a=(3|5);  
    2. System.out.println(a);  
    3. System.out.println(Integer.toBinaryString(3));   
    4. System.out.println(Integer.toBinaryString(5));   


       结果打印为 
         7 
        011 
        101 

        解析:3的二进制位011,5的二进制位101。或操作结果为111。转为10进制为7 


    ^(异或) 
        运算规则:1^0=0   0^1=1   1^0=1   1^1=0 
             即:参加运算的两个对象,如果两个个相应位为“异”(值不同),则该位结果为1,否则为0 

       
    Java代码  收藏代码
    1. int a=(3^5);  
    2. System.out.println(a);  
    3. System.out.println(Integer.toBinaryString(3));   
    4. System.out.println(Integer.toBinaryString(5));   

        
        结果打印为 
              6 
           011 
           101 

        解析:3的二进制位011,5的二进制位101。或操作结果为110。转为10进制为6 


    ~(非) 
        运算规则:~1=0   ~0=1          
            即:对一个二进制数按位取反,即0变为1,1变为0 

        ~运算符的优先级比算数运算符、关系运算符、逻辑运算符和其他运算符都高 

    <<(左移) 
        将一个运算符对象的各二进制位全部左移诺干位(左边的二进制位丢弃,右边补0) 
         操作数每左移一位,相当于该数乘以2 
       
    Java代码  收藏代码
    1. int a=(3<<2);  
    2. System.out.println(a);  
    3. System.out.println(Integer.toBinaryString(3));   
    4. System.out.println(Integer.toBinaryString(12));   

        
        结果打印为 
             12 
            11 
            1100 

        解析:此运算符的意思就是把3的二进制位全部左移两位,右边补2个0。3的二进制位11,左移两位后,右边补2个0就是1100。1100转为10进制为12。 
         说到底左移操作就相当于2的2次方×3。 每左移1位次方就增1 


    >>(右移) 
    将一个数的各二进制位全部右移诺干位,正数左补0,负数左补1,右边丢弃。 
    操作数每右移一位,相当于该数除以2 

    Java代码  收藏代码
    1. int a=(9>>1);  
    2. System.out.println(a);  
    3. System.out.println(Integer.toBinaryString(9));   
    4. System.out.println(Integer.toBinaryString(4));   

        
        结果打印为 
             4 
            1001 
            100 
         
        解析:9的二进制为1001,右移1位后,左正数补0,右边丢弃。结果为 0100。转为10进制后为4。
  • 相关阅读:
    Filesystem Case-Sensitivity Mismatch
    内存分配
    单链表
    PHP校验日期格式是否合法
    Automatically populating $HTTP_RAW_POST_DATA is deprecated
    preg_match(): Compilation failed: character value in x{} or o{} is too large at offset 8
    CGI 和 FastCGI 协议的运行原理
    冒泡排序
    油猴子脚本-过滤百度广告
    查看chrome插件源码
  • 原文地址:https://www.cnblogs.com/hz0356/p/3948395.html
Copyright © 2020-2023  润新知