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。