Java中移位運算有三種:左移運算(<<)、右移運算(>>)和無符號右移運算(>>>)。
左移運算(<<):將一個數(shù)的各二進(jìn)制位全部左移若干位,高位丟棄,低位補(bǔ)0。左移n位,相當(dāng)于乘以2的n次方。例如:3 << 2 = 12,即3左移2位等于12。
右移運算(>>):將一個數(shù)的各二進(jìn)制位全部右移若干位,低位丟棄,高位補(bǔ)上符號位。右移n位,相當(dāng)于除以2的n次方取整。例如:12 >> 2 = 3,即12右移2位等于3。
無符號右移運算(>>>):將一個數(shù)的各二進(jìn)制位全部右移若干位,低位丟棄,高位補(bǔ)0。無符號右移n位,相當(dāng)于除以2的n次方取整。例如:-3 >>> 1 = 2147483646,即-3無符號右移1位等于2147483646。
需要注意的是,移位運算只能應(yīng)用于整型數(shù)據(jù)(byte、short、int、long)的二進(jìn)制表示,對于浮點數(shù)和其他數(shù)據(jù)類型不適用。另外,移位運算不會改變原始數(shù)值本身,而是返回一個新的移位后的數(shù)值。