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

    位运算:用于2进制运算

    System.out.print(6&3);
      110
    &011
    --------
      010
    //  6&3  转换成2进制  0为false ,1为true   结果为2; 或运算只要是有效位都保留;
    6^3  6异或3
    转换为2进制
    110
    011
    -----
    101
    4,2,1   1+4=5
    5^3
    101
    011
    -----
    110  
    4,2,1  4+2=6   结论一个数异或同一个数两次还是这个数;例6^3^3=6   可以用于加密处理中
    System.out.println(~6); 取这个数的反码 ,实际为取反 0变1 1变0 ,取反加1 结果为-7 -7+1=-6
    System.out.println(3<<2);
    //3往左移2位  ,3为int型 所以是32位在内存中
    0000-0000 0000-0000 0000-0000 0000-0011 
    00-0000 0000-0000 0000-0000 0000-001100   左移2位结果
    3<<2=12   3<<3=24
    3*2(2)=12   3*2(3)=24 
    结论实际上左移x就是乘以2的x次幂
    6>>1
    0000-0000 0000-0000 0000-0000 0000-0110
    00000-0000 0000-0000 0000-0000 0000-011  6右移1位后
    6>>2
    000000-0000 0000-0000 0000-0000 0000-01  6右移2位后
    结论实际上右移就是该数局除以2的几次幂
    >>>  三个大于号右移与两个区别   数据进行右移时高位出现了空位,不论原高位是什么,空位否用0补
    2*8=16;使用最快的方式算出2*8
    // 最快方式就是移位 2*2(3)  2向左移3位   2<<3
    运算过程  , 比较复杂
         0010
       *1000
       ----------
          0000
        0000 
      0000
    0010
    -------------
        10000
    使用位运算 完成 两个整数变量交换数值
    可以采用方式 
    int a=3,b=5;
    a=a+b;
    b=a-b;
    a=a-b;
    虽然可以实现但是容易超出int范围
    第二种方式 (位运算完成)
    a=a^b;
    b=a^b;
    a=a^b;
    通过位运算完成交换  面试常用
    第三种方式
    int c;
    c=a;
    a=b;
    b=c;
    开发时使用
  • 相关阅读:
    xml
    反射
    类加载器
    TCP通信
    UDP通信
    网络通信
    【SpringBoot】Freemarkerの主キー
    【SpringBoot】Warの作成
    【Excel】ファイルの拡張子
    【SAP】TCODE表
  • 原文地址:https://www.cnblogs.com/wangyinxu/p/6495925.html
Copyright © 2011-2022 走看看