按位操作符及位运算符是对二进制位的操作,即对两个参数对应的位执行布尔代数运算。
- “与”操作符 &
两个输入位都为1,则生成一个输入位 1,否则生成一个输入为0 - “或”操作符 |
两个输入位中有一个为1,则生成一个输入位1。只有在两个输入位都为0的时候生成一个输入位0 - “异或”操作符 ^
当两个输入位相同时,生成一个输入位1,两个输入位不同时,生成一个输入位0 - “非”操作符 ~
非 操作符也称为取反操作符,为一元操作符,按位非操作符生成与输入位相反的值,也就是说当输入位为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