位运算符是对数据转换为二进制后某个位上的数进行的运算,各个语言中都有位运算符,Golang也不例外,由于位运算符的执行效率比较高,在实际开发过程中也都有使用,Golang的位运算符相较于C/C++貌似“少了”一种操作,这里的少了并不是真正的少了,而是非这个操作不再使用单独的位运算符。
Golang的位运算符有以下几种:
& 位运算 AND
| 位运算 OR
^ 位运算 XOR
&^ 位清空 (AND NOT)
<< 左移
>> 右移
&(与)运算符是二元运算符,当两个操作位上值均为1时,结果为1,其余结果一概为0。
|(或)运算符是二元运算符,当两个操作位上值均为0时,结果为0,其余结果一概为1。
^(异或)运算符既可以当做一元运算符也可以当做二元运算符,当为一元运算符时,表示取反操作,也就是该位原来值为0,取反后值为1;当为二元运算符时,当两个操作位上值相同时结果为0,不相同(相异)时结果为1。
&^(按位清除)运算符,该运算符的实际操作为&(^)操作。
<<(左移)运算符,相当于*2扩大两倍。>>(右移)运算符相当于/2缩小两倍。