运算符 | 描述 | 实例 |
---|---|---|
& | 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。 | (A & B) 结果为 12,二进制为 0000 1100 |
| | 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或 | (A | B) 结果为 61,二进制为 0011 1101 |
^ | 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。 | (A ^ B) 结果为 49,二进制为 0011 0001 |
左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 | A << 2 结果为 240 ,二进制为 1111 0000 | |
>> | 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 | A >> 2 结果为 15 ,二进制为 0000 1111 |
运算说明:
and运算&:
通常用于二进制的取位操作。一个数&1的结果就是取二进制的最末位。可以用来判断一个整数的奇偶。二进制最末位为0表示偶数,最末位为1表示奇数。
相同位的两个数字都为1,则结果为1,若有一个不为1,那么结果为0.
or 运算 | :
通常用于二进制特定位上的无条件赋值。一个数 | 1的结果就是把二进制的最末未强行变成1.如果需要把二进制最末位变成0,需要对这个数进行 | 1之后再减1.实际意义是把这个数强行变成最接近 的偶数。
相同位只要一个为1即为1
xor运算 ^
^(XOR) 在go语言中XOR是作为二元运算符存在的
但是如果是作为一元运算符出现,他的意思是按位取反。
1010的反码是0101:
解析:
1010在32位计算机存储为0000 1010
1.求补码 : 1010取反以后结果为 1111 0101 (在计算机中,首位为0代表正数,首位是1代表负数)
2. 求补码的逆: 先减1得:1111 0100 , 再取反(取反时符号位不变)得:0000 1011 ------计算结果为-11
XOR是不进位加法计算,也就是异或计算。0000 0100 + 0000 0010 = 0000 0110 = 6
异或的符号是^。按位异或运算,对等长二进制模式按位或二进制数的每一位执行逻辑按位异或操作. 操作的结果是如果某位不同则该位为1,否则该位为0.
xor运算的逆运算是它本身,也就是说两次异或同一个数最后结果不变,即(a xor b) xor b = a。
相同位不同则为1,相同则为0。
&^ 位清空
&^ 位清空 (AND NOT)
和被运算变量位置有关系
左移<<
乘以2的n次方
右移>>
除以2的n次方