今天小编给大家介绍一下JAVA位运算符:
Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设a=60,b=13;它们的二进制格式表示将如下:
A=00111100
B=00001101
-----------------
A&B=00001100
A|B=00111101
A^B=00110001
~A=11000011
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
操作符描述例子
&如果相对应位都是1,则结果为1,否则为0(A&B),得到12,即00001100
|如果相对应位都是0,则结果为0,否则为1(A|B)得到61,即00111101
^如果相对应位值相同,则结果为0,否则为1(A^B)得到49,即00110001
〜按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即11000011
<
>>按位右移运算符。左操作数按位右移右操作数指定的位数。A>>2得到15即1111
>>>按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A>>>2得到15即00001111
实例
下面的简单示例程序演示了位运算符。复制并粘贴下面的Java程序并保存为Test.java文件,然后编译并运行这个程序:
Test.java文件代码:
publicclassTest{
publicstaticvoidmain(String[]args){
inta=60;/*60=00111100*/
intb=13;/*13=00001101*/
intc=0;
c=a&b;/*12=00001100*/
System.out.println("a&b="+c);
c=a|b;/*61=00111101*/
System.out.println("a|b="+c);
c=a^b;/*49=00110001*/
System.out.println("a^b="+c);
c=~a;/*-61=11000011*/
System.out.println("~a="+c);
c=a<<2;/*240=11110000*/
System.out.println("a<<2="+c);
c=a>>2;/*15=1111*/
System.out.println("a>>2="+c);
c=a>>>2;/*15=00001111*/
System.out.println("a>>>2="+c);
}
}
以上实例编译运行结果如下:
a&b=12
a|b=61
a^b=49
~a=-61
a<<2=240
a>>2=15
a>>>2=15