&
位与func main() { var x uint8 = 0xAC // x=10101100 x &= 0xF0 // x= 10100000 }
&
判断一个数为奇数(odd
)还是偶数(even
)
&
如果结果是1,就说明原来的数字是奇数
|
位或^
操作符func main() { var a uint16 = 0xCEFF a ^= 0xFF00 // same a = a ^ 0xFF00 } // a = 0xCEFF (11001110 11111111) // a ^=0xFF00 (00110001 11111111)
(a ^ b) >= 0
那么a和b同号,如果
(a ^ b) < 0
那么a和b异号
^
作为位非操作 go中
^x=1^x
将会反转x的位,可以通过 ^a
来计算变量
a
的补码
&^
运算符&^
运算符叫做 AND NOT
。它是一个 使用
AND
后,再使用 NOT
操作的简写
Given operands a,b AND_NOT(a, b) = AND(a, NOT(b)) // 给定两个操作数 a,b // 当 a=NOT(b)=1 时,操作 AND_NOT(a, b) 返回 1。 // 否则返回 0。
AND_NOT(a, 1) = 0; clears a AND_NOT(a, 0) = a;
<<
和 >>
运算符Given integer operands a and n, a << n; 将 a 中的所有位向左偏移 n 次 a >> n; 将 a 中的所有位向右偏移 n 次
func main() { var a int8 = 3 fmt.Printf("%08b\n", a) fmt.Printf("%08b\n", a<<1) fmt.Printf("%08b\n", a<<2) fmt.Printf("%08b\n", a<<3) } // prints: //00000011 //00000110 //00001100 //00011000