golang 位运算


运算符描述实例
&按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。(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次方








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值