&运算
- 有效清除指定位的bit值
var x uint=0xAC
x=x & 0xF0 //清除后四个bit位 也可以写成 x &= 0xF0
2. 判断奇偶
if x & 1 == 1 {
fmt.Println(“odd number”)
} else {
fmt.Println(“even number”)
}
| 运算
- 使用OR操作来有选择的设置给定整数的某个位,比如与0x0F进行或运算,将低四位设置为1
- 结合使用&和| 可以实现将位作为配置信息,配置和读取不同位的值。
^操作
- 一个数与0x00做异或,则该数保持不变
- 一个数与0xff做异或,则该数的各bit位取反
- XOR的一个实际用途就是判定符号,(a^b)>=0判定两个数的符号是否相同
- 异或操作符作为一元操作符,功能是取反,相当于和0xff做异或。
&^操作
X &^ Y 当Y的位值为0则取X的对应位的值,否则清除X对应位的值(即取值为0)
<<和>>操作
对无符号数每次移动,最低有效位用0填充,相反的,使用右移操作位时,最高有效位用0填充。
当一个有符号值(左移)移位时,Go自动使用算数移位。在右移操作中,符号位被拷贝(或者扩展)来填充移动的位置。