我一直在尋找大約一週的時間,似乎無法爲Go語言中的這兩個運算符&^
和&^=
找到合適的解釋以及如何使用它們。有人會開導我嗎?Go中的&^和&^ =運算符的用法和含義
5
A
回答
11
這很容易理解,當我們看一看所有的位運算符:
& bitwise AND
| bitwise OR
^ bitwise XOR
&^ bit clear (AND NOT)
- 位與(
&
):結果爲1時,這兩個操作數位爲1,否則結果爲0 。 - 按位或(
|
):結果是1時,至少一個操作數位爲1,否則爲0如果兩個操作數位爲0 - 按位XOR(
^
):結果是1時一個且僅一個操作數位是1,否則結果是i這三個運算符(&, |, ^
)產生相同的結果,與操作數位的順序無關。 - 按位與NOT(
&^
):結果是1時,第一操作數位是1,並且第二個操作數位是0;否則結果爲0.請注意,操作數位的順序會影響結果。對於結果爲1,第一個操作數位必須是1和第二必須爲0
這裏的代碼,also on the Go Playground,演示位運算符的行爲:
package main
import "fmt"
func main() {
fmt.Println(`AND`)
fmt.Printf("%b & %b results in %03b\n", 4, 5, 4&5)
fmt.Printf("%b & %b results in %03b\n", 5, 4, 5&4)
fmt.Println(`OR`)
fmt.Printf("%b | %b results in %03b\n", 4, 5, 4|5)
fmt.Printf("%b | %b results in %03b\n", 5, 4, 5|4)
fmt.Println(`XOR`)
fmt.Printf("%b^%b results in %03b\n", 4, 5, 4^5)
fmt.Printf("%b^%b results in %03b\n", 5, 4, 5^4)
fmt.Println(`AND NOT`)
fmt.Printf("%b &^ %b results in %03b\n", 7, 5, 7&^5)
fmt.Printf("%b &^ %b results in %03b\n", 5, 7, 5&^7)
}
通過運行上述代碼所產生的輸出是:
AND
100 & 101 results in 100
101 & 100 results in 100
OR
100 | 101 results in 101
101 | 100 results in 101
XOR
100^101 results in 001
101^100 results in 001
AND NOT
111 &^ 101 results in 010
101 &^ 111 results in 000
最後,&^=
是SH或者分配操作員。例如,x = x &^ y
可以替換爲x &^= y
1
的spec says自己是位明確運營商:
&^ bit clear (AND NOT) integers
你會使用他們作爲一個位標誌值的一部分。您可以使用or
打開某個位,然後使用and not
將其關閉。
相關問題
- 1. Go中的「| =」運算符的含義是什麼?
- 2. 運算符>>和<<在處理中的含義
- 3. perl中//運算符的含義
- 4. java中某些運算符的含義
- 5. 運算符〜>在Scala中的含義?
- 6. 在sql中運算符+ =的含義
- 7. Ruby中的運算符和方法
- 8. 反應的調和算法中的單詞調和的含義
- 9. ==和=== php中的運算符
- 10. 使用python的**運算符和*運算符時的符號
- 11. 「+ +」運算符的含義(不是++)
- 12. - >運算符在grails中的用法和用法是什麼?
- 13. 定時運算符+,運算符,運算符*和運算符/
- 14. C++和運算符中的自定義向量和矩陣類[]
- 15. 和運算符在java中使用&&和!==
- 16. 運算符===和||
- 17. 在Ruby中使用::運算符定義方法的含義是什麼?
- 18. Ruby中的百分號+管道運算符的含義如「%|」中的含義?
- 19. Fortran,函數調用中的一元*運算符的含義?
- 20. 向量和運算符組合算法
- 21. 命名空間和用戶定義的運算符與stl算法
- 22. 運算符「==」和「=」之間的差異運算符「==」和「=」之間的差異「==」和「=」
- 23. Python賦值運算符使用逗號和下劃線的含義?
- 24. 運算符優先級和關聯性在c#中的含義是什麼?
- 25. >> java代碼顏色示例中>>和&運算符的含義
- 26. |運算符,++和I運算符
- 27. '和'Linq的運算符
- 28. SQL中的IN運算符和=運算符有什麼區別?
- 29. 自定義邏輯「和」運算符
- 30. 運算符未定義爲System.Data.SqlClient.SqlConnection和System.Data.SqlClient.SqlConnection