溫馨提示×

java移位運(yùn)算的規(guī)則有哪些

小億
89
2023-08-24 09:50:32
欄目: 編程語言

Java中的移位運(yùn)算有三種形式:左移運(yùn)算(<<),右移運(yùn)算(>>)和無符號右移運(yùn)算(>>>)。

  1. 左移運(yùn)算(<<):將一個數(shù)的所有位向左移動指定的位數(shù),右邊空出的位補(bǔ)0。例如:2 << 1得到4,即2的二進(jìn)制表示為10,左移1位后變?yōu)?00,即4的二進(jìn)制表示。

  2. 右移運(yùn)算(>>):將一個數(shù)的所有位向右移動指定的位數(shù),左邊空出的位根據(jù)原來的最高位填補(bǔ)。如果原來是正數(shù),則左邊用0填補(bǔ),如果原來是負(fù)數(shù),則左邊用1填補(bǔ)。例如:-2 >> 1得到-1,即-2的二進(jìn)制表示為11111111111111111111111111111110,右移1位后變?yōu)?1111111111111111111111111111111,即-1的二進(jìn)制表示。

  3. 無符號右移運(yùn)算(>>>):將一個數(shù)的所有位向右移動指定的位數(shù),左邊空出的位補(bǔ)0。無符號右移運(yùn)算與右移運(yùn)算不同的是,無符號右移運(yùn)算不考慮符號位,將符號位當(dāng)作普通位處理。例如:-2 >>> 1得到2147483647,即-2的二進(jìn)制表示為11111111111111111111111111111110,無符號右移1位后變?yōu)?1111111111111111111111111111111,即2147483647的二進(jìn)制表示。

需要注意的是,移位運(yùn)算只能用于整數(shù)類型(byte、short、int和long),不能用于浮點(diǎn)數(shù)類型。此外,移位位數(shù)必須是非負(fù)數(shù)且小于整數(shù)的位數(shù),否則會出現(xiàn)異常。

0