cxfans
4/9/2019 - 11:27 AM

关于位清零运算符附带位运算的理解

关于位清零运算符附带位运算的理解

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
}