Java中的移位運(yùn)算規(guī)則如下:
左移運(yùn)算符(<<):將操作數(shù)的所有位向左移動(dòng)并用0填充右側(cè)空位。移動(dòng)的位數(shù)由右側(cè)的操作數(shù)指定。例如,對(duì)于表達(dá)式a << b
,將a
的所有位向左移動(dòng)b
個(gè)位置。
右移運(yùn)算符(>>):將操作數(shù)的所有位向右移動(dòng)。如果操作數(shù)是正數(shù),則用0填充左側(cè)空位;如果操作數(shù)是負(fù)數(shù),則用1填充左側(cè)空位。移動(dòng)的位數(shù)由右側(cè)的操作數(shù)指定。例如,對(duì)于表達(dá)式a >> b
,將a
的所有位向右移動(dòng)b
個(gè)位置。
無(wú)符號(hào)右移運(yùn)算符(>>>):將操作數(shù)的所有位向右移動(dòng)。無(wú)論操作數(shù)是正數(shù)還是負(fù)數(shù),都用0填充左側(cè)空位。移動(dòng)的位數(shù)由右側(cè)的操作數(shù)指定。例如,對(duì)于表達(dá)式a >>> b
,將a
的所有位向右移動(dòng)b
個(gè)位置。
需要注意的是,移位運(yùn)算符對(duì)于操作數(shù)的位數(shù)沒(méi)有限制。如果移動(dòng)的位數(shù)超過(guò)了操作數(shù)的位數(shù),則結(jié)果是未定義的。