Java中的左移和右移是比较常用的操作符,用于对二进制数进行位移。它们的语法很简单,左移使用“<>”或“>>>”符号。
左移运算符的作用是将指定数的二进制码全部向左移动指定的位数,左侧空出来的位用0补全。例如:
int a = 7; // 二进制为:0000 0111 int b = a<< 2; // 左移2位,结果为:0001 1100(28)
右移运算符有两种:带符号右移和无符号右移。带符号右移使用“>>”符号,无符号右移使用“>>>”符号。
带符号右移运算符的作用是将指定数的二进制码全部向右移动指定的位数,右侧空出来的位用符号位的值填充。即如果原数是正数,用0填充,如果原数是负数,用1填充。例如:
int a = -7; // 二进制为:1111 1001 int b = a >>2; // 带符号右移2位,结果为:1111 1110(-2)
无符号右移运算符的作用也是将指定数的二进制码全部向右移动指定的位数,但右侧空出来的位全部用0填充。无符号右移在处理负数时结果与带符号右移不同。例如:
int a = -7; // 二进制为:1111 1001 int b = a >>>2; // 无符号右移2位,结果为:0011 1110(62)
总之,Java中的位移运算符主要是用于对二进制数进行位移。左移“<>”符号与带符号右移,将指定数的二进制码全部向右移动指定的位数,右侧空出来的位用符号位的值填充;无符号右移“>>>”符号将指定数的二进制码全部向右移动指定的位数,右侧空出来的位全部用0填充。