关于位清零运算符附带位运算的理解
package main
import "fmt"
func main() {
var x uint8 = 1 // 1
var y uint8 = 1 << 2 // 100
// 即z = x &^ y运算相当于先把y取反(针对y的每个bit:0变成1,1变成0),然后再和x进行&运算
// ^ y = 11
fmt.Printf("%08b\n", x&^y)
var x uint8 = 1 << 5 // 100000
var y uint8 = 1 << 2 // 100
fmt.Printf("%06b\n", x&y) // 000000
fmt.Printf("%06b\n", x|y) // 100100
// 按位异或,参与运算的两个值,如果两个相应位相同,则结果为0,否则为1
// 0^0=0, 1^0=1, 0^1=1, 1^1=0
fmt.Printf("%06b\n", x^y) // 100100
}