位運算符

一. 位運算符 &、|、^、~、>>、<<

使用位運算符時首先將要進行運算的數轉換爲二進制,而後對二進制數值中的每一位進行計算,最後將得出的二進制數轉換爲相應類型的數值結果優化

1. & 與運算符

與運算規則spa

0 & 0 = 0
0 & 1 = 0
1 & 1 = 1

與門邏輯電路,輸入端均爲高電平(邏輯1)時,輸出才爲高電平,不然爲低電平(邏輯0)3d

例:code

3 & 5

轉換爲二進制blog

0000 0011
&
0000 0101

從最低位到最高位一一對應進行運算,得出結果get

0000 0001

所以it

3 & 5 = 1

2. | 或運算符

或運算規則二進制

0 | 0 = 0
0 | 1 = 1
1 | 1 = 1

或門邏輯電路,輸入端A或輸入端B爲高電平(邏輯1)時,輸出爲高電平(邏輯1)im

例:db

4 | 7

轉換爲二進制

0000 0100
|
0000 0111

從最低位到最高位一一對應進行運算,得出結果

0000 0111

所以

4 | 7 = 7

3. ^ 異或運算符

異或運算規則,位數值相同則爲0,不一樣則爲1

0 ^ 0 = 0
0 ^ 1 = 1
1 ^ 1 = 0

異或門邏輯電路

例:

5 ^ 9

轉換爲二進制

0000 0101
^
0000 1001

從最低位到最高位一一對應進行運算,得出結果

0000 1100

所以

5 ^ 9 = 12

4. ~ 取反運算符

取反運算規則,對操做數的每一位進行取反操做,0取反爲1,1取反爲0

~0 = 1
~1 = 0

例:

~7

轉換爲二進制

0000 0111 ~

對每一位進行取反運算,得出結果

1111 1000

5. << 左移運算符

運算規則:將操做數的各二進制位左移若干,右補0,左溢出位捨棄

15轉換爲二進制00001111,左移兩位

00001111 << 2

結果爲

00111100

在數字沒有溢出的前提下,對於正數負數,左移一位都至關於乘以2的1次方,左移n位就至關於乘以2的n次方。由於位運算比x運算快,能夠使用位運算對代碼進行優化

6. >>> 右移運算符

將二進制位向右移若干,右溢出位捨棄,高位補0

例如 16,二進制爲00010000,右移兩位

00010000 >>> 2

運算結果爲 00000100,即16/(2*2) = 4

7. >> 帶符號的右移運算符

對於正數的運算>>與>>>效果是同樣的,右移高位補0。可是對於負數,>> 是在高位補1

例16與-16

00010000 >> 2 = 00000100
11101111 >> 2 = 11111011
相關文章
相關標籤/搜索