Java操作符之按位操作符

来源:互联网 发布:飞机场的10 30 知乎 编辑:程序博客网 时间:2024/05/20 23:34

按位操作符及位运算符是对二进制位的操作,即对两个参数对应的位执行布尔代数运算。

  1. “与”操作符 &
    两个输入位都为1,则生成一个输入位 1,否则生成一个输入为0
  2. “或”操作符 |
    两个输入位中有一个为1,则生成一个输入位1。只有在两个输入位都为0的时候生成一个输入位0
  3. “异或”操作符 ^
    当两个输入位相同时,生成一个输入位1,两个输入位不同时,生成一个输入位0
  4. “非”操作符 ~
    非 操作符也称为取反操作符,为一元操作符,按位非操作符生成与输入位相反的值,也就是说当输入位为1时输出0,当输入位为0时输出1


public class ByteOperaTest {

public static void main(String[] args) {    // 1010 1010 1010    int a = 0xaaa;    // 0101 0101 0101    int b = 0x555;    System.out.println("a byte is " + Integer.toBinaryString(a));    System.out.println("b byte is " + Integer.toBinaryString(b));    int c = a&b;    System.out.println("c byte is " + Integer.toBinaryString(c));    int d = a|b;    System.out.println("d byte is " + Integer.toBinaryString(d));    int e = a^b;    System.out.println("e byte is " + Integer.toBinaryString(e));    int f = ~a;    System.out.println("f byte is " + Integer.toBinaryString(f));    System.out.println("f int is " + f);    int g = ~b;    System.out.println("g byte is " + Integer.toBinaryString(g));    System.out.println("g int is " + g);}

输出为:
a byte is 101010101010
b byte is 10101010101
c byte is 0
d byte is 111111111111
e byte is 111111111111
f byte is 11111111111111111111010101010101
f int is -2731
g byte is 11111111111111111111101010101010
g int is -1366