JavaSE 学习参考:位运算符

Java位运算符有:&按位与,|按拉或,^按位异或,~按位取反,<<左移位,>>右移位,>>>右移位。下面以23和11作为操作数来演示:

运算符

规则

十进制

二进制

&按位与

两个操作数的二进位都为1结果为,否则为0

23

0001 0111

11

0000 1011

3

0000 0011

|按位或

两个操作数的二进位只要有1位为1结果为,否则为0

23

0001 0111

11

0000 1011

31

0001 1111

^按位异或

两个操作数的二进位相同为0,不同为1

23

0001 0111

11

0000 1011

28

0001 1100

~按位取反

是一个单目运算符,结果是将该数的二进制位取反

23

0001 0111

-24

1110 1000

<<左移位

将左操作数二进制位左移右操作数位数

23

0001 0111

2

92

0101 1100

>>右移位

将左操作数二进制位右移右操作数位数

23

0001 0111

2

5

0000 1011

>>右移位

将左操作数二进制位右移右操作数位数

23

0001 0111

2

5

0000 1011

>>>右移位

将左操作数二进制位右移右操作数位数,左边符号位以0补上

-24

1 {27个1} 1110 1000

1

2147483636

0 {27个1}  1111 0100

示例1:位运算符

packagecom.bwf.sample;

publicclassDemo1{

publicstaticvoidmain(String[]args) {

inta=23,b=11;

intc;

c=a&b;

System.out.println(String.format("%d & %d = %d",a,b,c));

c=a|b;

System.out.println(String.format("%d | %d = %d",a,b,c));

c=a^b;

System.out.println(String.format("%d ^ %d = %d",a,b,c));

c=~a;

System.out.println(String.format("~%d  = %d",a,c));

c=a<<2;

System.out.println(String.format("%d << 2 = %d",a,c));

c=a>>2;

System.out.println(String.format("%d >> 2 = %d",a,c));

c=-24>>>1;

System.out.println(String.format("%d >>> 2 = %d",a,c));

}

}

执行的结果如下图所示:

推荐阅读更多精彩内容