在Java編程中,左移位運算和右移位運算是一種非常常見的操作。這兩種操作用于改變整數的二進制表示中的比特位,進行位運算,得到新的結果。左移位運算將二進制數向左移動一定數量的比特位,右移位運算則是將二進制數向右移動一定數量的比特位。
左移運算是在二進制數的右邊加上一定數量的0,相當于將該數乘以2的指定次冪。例如,將二進制數101101左移兩次,則得到10110100,這相當于將十進制數45左移兩位,即乘以4。Java中使用左移運算符<<來完成這一運算。
int a = 45; //二進制表示為101101 int b = a << 2; //左移2位,得到10110100,即180
右移運算是在二進制數的左邊加上一定數量的0或1,相當于將該數除以2的指定次冪并向下取整。如果二進制數的最高位是1,則插入1,否則插入0。例如,將二進制數101101右移兩次,則得到1011,這相當于將十進制數45右移兩位,即除以4并向下取整。Java中使用右移運算符>>來完成這一運算。
int a = 45; //二進制表示為101101 int b = a >> 2; //右移2位,得到10,即10進制的11
另外,在右移運算中,還有一種帶符號右移運算符>>>。該運算符在二進制數的左邊總是插入0,不管原二進制數的最高位是什么。這個運算符的結果可能與直接的右移運算符>>不同。
int a = -45; //二進制表示為11111111111111111111111111010011 int b = a >>> 2; //帶符號右移2位,得到00111111111111111111111111110100,即1073741788 int c = a >> 2; //右移2位,得到11111111111111111111111111110100,即-12
總之,位運算是Java語言中非常有用的操作,在一些特殊情況下,可以極大地提高程序的效率。
上一篇31歲學php來得及嗎
下一篇php app升級