淘先锋技术网

首页 1 2 3 4 5 6 7

Java中有两种类型的左移运算符。第一种是<

int a = 4;
int b = a<< 2; // b的值为16,二进制为10000

在这个例子中,原来的a值为4,其二进制为100。左移2个位数后变为10000,即十进制的16。
第二种类型是循环左移运算符。这个运算符也叫做“环形移位”,它能将一个数的二进制表示左移一定位数后,将移到二进制数的最高位上。剩下的位则从最高位依次循环移位到最低位上。例如:

int c = 15;
int d = c<< 2 | c >>(32 - 2); // d的值为63,二进制为111111

在这个例子中,原来的c值为15,其二进制为1111。左移2个位数后变为111100。由于32位二进制数中最高位为符号位,为了防止左移越界,需要用32减去移动的位数。在这里,我们用32减去2得到了30。接着,c的右移位数为30,左移之后的值与右移之后的值进行或运算,得到最终的结果d为111111,即63。