>是大于号,比较大小运算符
>>有符号移动。
把要移动的数转换成2进制,右移几位就去掉右边的几位数,左移几位就在右边加几个0,
如:14右移2位:14转成二进制为1110,去掉右边的10,变成11,11转成十进制就是3;14左移2位就是111000,转成十进制就是56。
>>> 无符号右移。
不论这个数为正数或负数。都在高位补零
例如20的二进制为 0001 0100,右移2位后为 0000 0101,则结果就为 res =5;
-20的二进制为 1110 1011,右移2位,此时高位补0,即 0011 1010,结果为 res =- 5;
public class letc {
public static void main(String[] args) {
int x = 3;int y = 4;
System.out.println( "x & y : " + (x & y) );//与 0000
System.out.println( "x|y : " + (x | y) );//或 4二进制为0100 3|4为0111 为7
System.out.println( "x ^ y : " + (x ^ y) );
System.out.println( "x >> 1 : " + (x >> 1) ); //3的二进制 0011 右移1位 0001变成1
System.out.println( "x >> 2 : " + (x >> 2) ); // 0011 右移2位 0000变成0
System.out.println( "x << y : " + (x << y) ); //0011左移动4位 0011 0000为48
}
}
- - - - - - - - - - -
运行结果:
x & y : 0
x| y : 7
x ^ y : 7
x >> 1 : 1
x >> 2 : 0
x << y : 48