赞
踩
常见的位逻辑运算符:
运算符 | 描述 |
---|---|
& | 位与运算符,表示AND(表示所有条件都得匹配),运算规则为相同位都是1时结果才为1,不同则为0。举个例子:如"5 & 7",结果为5。 |
| | 位或运算符,表示OR(表示有一个条件匹配即可),运算规则为相同位只要一个为1则为1。举个例子:如"5 |
^ | 位异或运算符,表示XOR,运算规则为相同位不同则为1,相同则为0。举个例子:如"5 ^ 7",结果为2 |
&^ | 位清空运算符,表示AND NOT,运算规则为后数为0,则用前数对应位代替,后数为1则取0。举个例子:如"5 ^ 7",结果为0 |
<< | 左移,表示将对应的二进制数字向左移动相应的位数,比如 5 << 3,结果为40。计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 0101,将二进制数字向左位移3位得到0010 1000,使用十进制表示为"40" |
>> | 右移,表示将对应的二进制数字向右移动相应的位数,比如 5 >> 3,结果为1。计算过程为:我们用一个字节来表示一个数字,5转换成二进制为0000 0101,将二进制数字向左位移3位得到0000 0001,使用十进制表示为"1" |
// 对于任意整数x,x&1的结果为0表示x为偶数,结果为1表示x为奇数
// 示例代码如下:
if x&1 == 0 {
fmt.Println("x is even")
} else {
fmt.Println("x is odd")
}
// 对于任意整数x和y,可以通过位运算实现两个数的交换
// 示例代码如下:
x, y = y, x
// 对于任意正整数x,x&(x-1)的结果为0表示x是2的幂次方,否则不是
// 示例代码如下:
if x&(x-1) == 0 {
fmt.Println("x is a power of 2")
} else {
fmt.Println("x is not a power of 2")
}
package main import "fmt" const ( title = 1 // 标题 desc = 1 << 1 // 描述 image = 1 << 2 // 图片 tag = 1 << 3 // tag ) func main() { // 定义显示的字段标识 showFlag := 0 // 需要显示 title showFlag = showFlag | title fmt.Println(showFlag) // 1 // 需要显示 desc showFlag = showFlag | desc fmt.Println(showFlag) // 3 // 需要显示 desc // showFlag = showFlag | image // fmt.Println(showFlag) // 7 // 需要显示 tag showFlag = showFlag | tag fmt.Println(showFlag) // 11 // 判断哪个需要显示: if showFlag|title == showFlag { fmt.Println("需要显示 title") } if showFlag|desc == showFlag { fmt.Println("需要显示 desc") } if showFlag|image == showFlag { fmt.Println("需要显示 image") } if showFlag|tag == showFlag { fmt.Println("需要显示 tag") } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。