位運算符
尹成課程資料及演示(免費)(文末有資料連結)
位運算符是針對二進位數的每一位進行運算的符號,它是專門針對數字0和1進行操作的。接下來通過一張表來展示Java中的位運算符及其用法,如表1所示。
表1 位運算符
從表1可以看出,Java中的位運算符本質都是針對二進位數0和1進行運算的,所以,在使用位運算符時,都會先將操作數轉換成二進位數的形式進行位運算,然後將得到的結果再轉換成想要的進位數。
接下來通過一些具體示例對表2-10中描述的位運算符進行詳細講解。為了方面描述,下面的運算都是針對一個byte類型的數,也就是一個字節大小的數的運算,具體如下:
1.位運算符「&」是將參與運算的兩個操作數以二進位數的形式進行「按位與」運算,如果相同位上的兩個二進位位都為1,則該位的運算結果為1,否則為0。
例如將6和 11進行按位與運算,一個byte類型的數字6對應的二進位數為00000110,數字11對應的二進位數為00001011,具體演算過程如下所示:
00000110
&
00001011
—————————
00000010
運算結果為00000010,對應十進位數值2。
2.位運算符「|」是將參與運算的兩個操作數以二進位數的形式進行「按位或」運算,如果相同位上的兩個二進位位有一個值為1,則該位的運行結果為1,否則為0。
例如將6與11進行或運算,具體演算過程如下:
00000110
|
00001011
—————————
00001111
運算結果為00001111,對應十進位數值15。
3.位運算符「~」只針對一個操作數進行操作,它會對二進位形式的操作數每位進行取反操作。如果二進位位是0,則取反值為1;如果是1,則取反值為0。
例如將6進行取反運算,具體演算過程如下:
~ 00000110
—————————
11111001
運算結果為11111001,對應十進位數值-7。
4.位運算符「^」是將參與運算的兩個操作數以二進位數的形式進行「異或」運算,如果相同位上的兩個二進位數值相同,則值為0,否則為1。
例如將6與11進行異或運算,具體演算過程如下:
00000110
^
00001011
—————————
00001101
運算結果為00001101,對應十進位數值13。
5.位運算符「
例如一個byte類型的數字11用二進位表示為00001011,將它左移一位,具體演算過程如下:
00001011
—————————
00010110
運算結果為00010110,對應十進位數值22。
6.位運算符「>>「就是將操作數二進位形式的所有進位位向右移動指定位數。運算時,左邊的空位根據原數的符號位補0或者1(原來是負數就全部補1,是正數就全部補0),右邊移走的部分捨去。
例如一個byte類型的數字11用二進位表示為00001011,將它右移一位,具體演算過程如下。
00001011 >>1
—————————
00000101
運算結果為00000101,對應十進位數值5。
7.位運算符「>>>」屬於無符號右移,就是將操作數二進位形式的所有二進位位不考慮正負數向右移動指定位數。運算時,左邊的空位全部補0(不考慮原數正負),右邊移走的部分捨去。
例如一個byte類型的數字11用二進位表示為00001011,將它無符號右移一位,具體演算過程如下:
00001011 >>>1
—————————
00000101
運算結果為00000101,對應十進位數值5。