位运算符介绍(二):Java位运算符

    Java语言提供了7个位操作运算符。这些运算符只能用于整型操作数,这些整数操作数包括long,int,short,char和byte。这里注意,相对于C/C++,Java多了一个位运算符“>>>”,整型操作数也多了一个byte类型(C/C++中没有byte类型整数),并且操作数没有unsigned类型整数,这需要注意。

    下面是Java位操作运算符列表,其中运算符优先级为从上到下递减,但<<,>>,>>>优先级相同。

Java位操作运算符

操作符功能用法
~位求反~expr
<<左移expr1 << expr2
>>带符号右移,左边空出的位以原来最左边的0或者1填充expr1 >> expr2
>>>无符号右移,即左边空出的位以0填充expr1 >>>expr2
&位与expr1 & expr2
^位异或expr1 ^ expr2
|位或expr1 | expr2

    代码示例如下:

 

  
   
    1 
   public
    
   class
    BitOperation {
2 public static void main(String[] args) {
3 int x = 3 ,y = 5 ,z =- 5 ;
4 System.out.println( " ~z= " + ( ~ z));
5 System.out.println( " x&y= " + (x & y));
6 System.out.println( " x^y= " + (x ^ y));
7 System.out.println( " x|y= " + (x | y));
8 System.out.println( " z<<1= " + (z << 1 ));
9 System.out.println( " z>>1= " + (z >> 1 ));
10 System.out.println( " z>>>1= " + (z >>> 1 ));
11 }
12 }

 

    运行结果如下:

~z=4

x&y=1

x^y=6

x|y=7

z<<1=-10

z>>1=-3

z>>>1=2147483645

    对于前四个结果,我不再做解释,可参考我的博文“位运算符(一):C/C++位运算符”。对于后三个结果,我的解释如下:

    z=-5,补码表示为(11111111 11111111 11111111 11111011)

         11111111 11111111 11111111 11111011 <<1

      = 11111111 11111111 11111111 11110110

         11111111 11111111 11111111 11111011 >>1

      = 11111111 11111111 11111111 11111101

         11111111 11111111 11111111 11111011 >>>1

      = 01111111 11111111 11111111 11111101

 

    原文作者:位运算
    原文地址: http://www.cnblogs.com/thujason/archive/2010/07/08/1773535.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞