Java中右移和無(wú)符號(hào)右移是兩個(gè)十分常用的運(yùn)算符。在使用時(shí),需要注意它們之間的區(qū)別。
右移運(yùn)算符(>>):
右移運(yùn)算符的作用是將一個(gè)數(shù)字按照二進(jìn)制的形式向右移動(dòng)指定的位數(shù)。
int a = 8; int b = a >>2; System.out.println(b); //輸出2
以上代碼中,變量a的二進(jìn)制形式為1000,右移兩位后變成0010,其十進(jìn)制值為2。
無(wú)符號(hào)右移運(yùn)算符(>>>):
無(wú)符號(hào)右移運(yùn)算符的作用與右移運(yùn)算符相同,除了它將高位的空缺位也按照0填充。
int c = -8; int d = c >>>2; System.out.println(d); //輸出1073741822
以上代碼中,變量c的二進(jìn)制形式為11111111111111111111111111111000,無(wú)符號(hào)右移兩位后變成00111111111111111111111111111110,其十進(jìn)制值為1073741822。
綜上所述,右移運(yùn)算符會(huì)將數(shù)字的符號(hào)位也向右移動(dòng),而無(wú)符號(hào)右移運(yùn)算符則會(huì)在將符號(hào)位右移時(shí)用0填充。因此,在使用這兩個(gè)運(yùn)算符時(shí),需要根據(jù)具體情況來(lái)選擇使用哪種方式。