>>,<<,>>>
- << 左移运算符
- >> 右移运算符(也称有符号右移运算符)
- >>> 无符号右移运算符
前四个就不用说了,下面主要说下后三个:<< 左移(左移1位相当于乘2)
例:2<<3 2左移3位就相当于2乘了三次2,也就是2*8,结果就是16
对应二进制要好理解一些:
2(int)换算成二进制就是:0000 0000 0000 0000 0000 0000 0000 0010
左移三位是: 0000 0000 0000 0000 0000 0000 0001 0000(高位舍弃,低位补0)
换算成十进制就是16>> 右移(右移1位相当于除2取商)
例:16>>3 16右移3位就相当于16除了三次2,也就是16/8,结果就是2
对应二进制:
16(int)换算成二进制就是:0000 0000 0000 0000 0000 0000 0001 0000
右移三位是:0000 0000 0000 0000 0000 0000 0000 0010(高位补0,低位舍弃)
换算成十进制就是2>>> 无符号右移
例:16>>>3
对应二进制:
16(int)换算成二进制就是:0000 0000 0000 0000 0000 0000 0001 0000
无符号右移三位结果就是:0000 0000 0000 0000 0000 0000 0000 0010(高位补0,你们舍弃)
换算成二进制就是2
以下为对应代码及输出结果:
public static void main(String[] args) {
int a = 16;
int b = 2;
//输出2左移3位的结果
System.out.println(b << 3);
//输出16右移3位的结果
System.out.println(a >> 3);
//输出16无符号右移3位的结果
System.out.println(b >>> 3);
}
结果:
16
2
0