zoukankan      html  css  js  c++  java
  • 运算符

    逻辑运算符
    &(与)两边为true则为true,否则false
    |(或)任意一边为true则为true
    ^(异或)两边不同则为true,两边相同则为false
    !(非)原先为true则为false,原先为false则为true
    &&(双与)两边为true则为true,否则false
    ||(双或)任意一边为true则为true

    &&和&的区别:
    短路问题:
    &&先执行左边,如果根据左边就可以得出结论的话就不会执

    行右边的操作和判断,直接输出判断结果。&会坚持将两边都

    走完。
    ||和|也是这样的区别

    举例子:
    package test;

    public class Test3 {
        public static void main(String[] args){
            int a=10;
            int b=20;
            int c=10;
            int d=20;        
            boolean flag=((a=a+1)>50)&&((b=b+1)

    >50);
            boolean flag1=((c=c+1)>50)&((d=d+1)

    >50);
            System.out.println("a="+a+" b="+b

    +" c="+c+" d="+d);
        }

    }
    得到的a=11,b=20,c=11,d=21

    ^(异或):
    两边相同则为false两边不同则为true
    !(非):
    针对一个元素,为true为变成false,为false则变成true

    位运算符
    对二进制进行运算

    package test;

    public class Test4 {
        public static void main(String[] args){
            /**
             求3位与,位或,位异或4的结果
             求~3的结果(按位取反)
             注意:二进制的运算都是针对补码进行操

    作的
            
            正数的原反补都是一样
            0代表false,1代表true,就是和逻辑运算

    符的与或非异或差不多了
            
        3:    00000000    00000000    

    00000000    00000011
        4:    00000000    00000000    

    00000000    00000100
        
        
     3&4:
             00000000    00000000    

    00000000    00000000    转成十进制得到 0
     3|4:
             00000000    00000000    

    00000000    00000111    转成十进制得到7
     3^4:    
             00000000    00000000    

    00000000    00000111    转成十进制得到7
     ~3:    
     补码:        11111111    11111111    

    11111111    11111100
     反码:        11111111    11111111    

    11111111    11111011
     原码:        10000000    00000000    

    00000000    00000100    得到-4
     
                 
     再写一个例子:
         3&-4
          3:    
                  00000000    00000000    

    00000000    00000011
          -4:
          原:    10000000    00000000    

    00000000    00000100
          反:    11111111    11111111    

    11111111    11111011
          补:    11111111    11111111    

    11111111    11111100
         
     得到:
         补:        00000000    00000000    

    00000000    00000000    得到:0
             
             
         ^位异或的特点:
             a对b进行了异或操作两次相当于没有进行

    对b的异或操作。
         以3^4^4为例子:
         3:    00000000    00000000    

    00000000    00000011
        4:    00000000    00000000    

    00000000    00000100
    第一次: 00000000        00000000    

    00000000    00000111
        4:    00000000    00000000    

    00000000    00000100
    第二次: 00000000        00000000    

    00000000    00000011
    可以发现,对同一个变量位异或2次就相当于没有异或
          
             */
        
            System.out.println(3|4);
            System.out.println(3^4);
            System.out.println(~3);
            System.out.println(3&(-4));
        }
        

    }


    package test;

    public class Test5 {
        public static void main(String[] args){
            /**
             * 根据>尖判断左移还是右移
             * 〉〉右移, 判断正负,正数的话,右移,空位补0;负数的话,右移,空位补1
             * << 左移 ,空位补0,被移除的最高位丢弃    
             * >>>无符号右移     右移,空位补0
             *
             * 针对正数的一些规律:
             * a>>b相当于a/(2^b)   3>>2=3/4=0
             * a>>>b和上面一样
             * a<<b相当于a*2^n   3<<2=3*2^2=12
             */
            
            
            int a=3<<2;
            int b=3>>2;
            int c=3>>>2;   //3*2^2=12
            int d=-3>>2;
            System.out.println(a);
            System.out.println(b);
            System.out.println(c);
            System.out.println(d);
            /*
             3
             原反补:    00000000000000000000000000000011
              00    00000000000000000000000000001100    得到:8+4=12
              
             原反补:    00000000000000000000000000000011
                     00000000000000000000000000000000  11 得到:0;
                     
                     00000000000000000000000000000011  原
                     11111111111111111111111111111100 反
                     
                     11111111111111111111111111111101 补
                     11111111111111111111111111111111  01补
                     11111111111111111111111111111110  反
                     10000000000000000000000000000001 原   得到:-1    
            
             */
        }

    }

  • 相关阅读:
    25个Apache性能优化技巧推荐 新风宇宙
    九个PHP很有用的功能 新风宇宙
    ubuntu nginx的安装 新风宇宙
    .net 下对winapi的调用
    jquery选中单选框、复选框、下拉框
    中国标准书号校验码的计算方式(附C#代码)
    NET中创建一个线程有几种方法
    ASP.NET中Cookie编程的基础知识
    js日期时间函数(经典+完善+实用)
    SQL语句大全
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5516869.html
Copyright © 2011-2022 走看看