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

     1 /**
     2   * 位运算符: &; |; ^; ~; >>; >>>; <<;
     3   */
     4  private void bitOperator() {
     5   byte a = 23; // "00010111"
     6   byte b = 26; // "00011010"
     7 
     8   // 按位与, 两个运算数都为1时,结果为1,其余结果为0
     9   int c = a & b; // "00010010" = 18
    10   System.out.println("(c = a & b) = " + c);
    11   // 按位或,两个运算数都为0时,结果为0,其余结果为1
    12   int d = a | b; // "00011111" = 31
    13   System.out.println("(d = a | b) = " + d);
    14   // 按位异或,两个运算数相同时结果为0,不同时结果为1
    15   int e = a ^ b; // "00001101" = 13
    16   System.out.println("(e = a ^ b) = " + e);
    17   // 按位非,0变成1,1变成0
    18   int f = ~a; // "11101000" = -24,
    19   // 注意,Java中采用补码存储数字,对于整数,原码与补码一致,
    20   // 对于负数,符号位不变,将原码取反然后加1,得到补码,补码"11101000"对应的原码是"10011000"即-24
    21   System.out.println("(f = ~a) = " + f);
    22   // 右移,左边空出位以符号位填充
    23   int g = a >> 1;// "00001011" = 11
    24   System.out.println("(g = a >> 1) = " + g);
    25   // 右移,左边空出位以0填充
    26   int h = a >>> 1;// "00001011" = 11
    27   System.out.println("(h = a >>> 1)" + h);
    28   // 对负数操作时,>>和>>>得到结果会不一样
    29   System.out.println("(-24 >> 1) = " + (-24 >> 1) + "\t (-24 >>> 1) = " + (-24 >>> 1));
    30   // 左移
    31   int i = a << 1; // "00101110" = 46
    32   System.out.println("(a << 1) = " + i);
    33 
    34   // 可以发现,右移1位相当于运算数除以2,左移1位相当于运算数乘以2,
    35   // 实质上,右移n位,相当于运算数除以2的n次方,左移n位,相当于运算数乘以2的n次方,读者可以试验。
    36   // 在进行乘除法操作时,开发者要有意识的利用这个特点,以提高运算速度。
    37  }
  • 相关阅读:
    换个角度思考问题
    云南印象
    子网掩码划分实例
    子网掩码划分工具下载
    实景地图
    AutoCAD图像输出(输出图像)技巧
    两种消费观念
    子网掩码划分计算方法及实例
    C/C++从入门到高手所有必备PDF书籍收藏
    WINCE6.0添加特定的软件键盘
  • 原文地址:https://www.cnblogs.com/lw900320/p/2615792.html
Copyright © 2011-2022 走看看