算数运算符
注意++(自增)和- -(自减)在go语言中是单独的语句,并不是运算符
| | |
| 运算符 |
描述 |
| + |
相加 |
| - |
相减 |
| * |
相乘 |
| / |
相除 |
| % |
求余 |
关系运算符
| | |
| 运算符 |
描述 |
| == |
判断左右两边是否相等是返回true否则返回false |
| ! = |
判断左边是否不等于右边是返回true否则返回false |
| > |
判断左边是否大于右边,是返回true否则返回false |
| > = |
判断左边是否大于并等于·右边,是返回true否则返回false |
| < |
判断左边是否小于右边,是返回true否则返回false |
| < = |
判断左边是否小于等于右边,是返回true否则返回false |
逻辑运算符
| | |
| 运算符 |
描述 |
| && |
逻辑AND运算符。如果两边的操作数都是True,则为True,否则为False |
| |
|
| ! |
逻辑NOT运算符。如果条件为True,则为False,否则为True,取反 |
位运算符
位指的是二进制位
| | |
| 运算符 |
描述 |
| & |
参与运算的两位数各取对应的二进制位相与。(两位均为1才为1) |
| |
|
| ^ |
参与运算的两位数各对应的二进制相异或,当两对应的二进制相异时,结果为1(两位不一样则为1) |
| << |
左移n位就是乘以2的n次方,高位丢弃,低位补0 |
| >> |
右移n位就是除以2的n次方。“a>>b”是把a的各位二进制位全部右移b位 |
package main
import "fmt"
func main() {
//5的二进制数为101
//2的二进制数为010
//按位或
fmt.Println(5 & 2) //对应与,5的二进制数第一个是1,2的二进制数第一个是0因为两个数相比都为1才为一,所以这两个数与就是0,5和2的二进制后面两位也是一个道理,所以5和2的&位运算是0
//按位与
fmt.Println(5 | 2) //因为或是两个数的二进制数相对的位置上的数只要一个为1那两个数相或就是1,所以这两个数位运算的二进制数结果为111,转换为10进制数就是7
//^ 按位异或,两位不一样则为1
fmt.Println(5 ^ 2) //对应的二进制数为111,结果为7
//将二进制位左移指定位数 <<
fmt.Println(5 << 1) // 5的二进制数是101左移1位就是在101后面加上0也是就1010 => 10
//将二进制位右移指定位数
fmt.Println(5 >> 1) //5的二进制数是101右移1位就是把最右边的数去掉变成10 =>2
}
为什么要有位运算,例如运算ip地址,做权限linux中的777
赋值运算
都是将右边的值或者表达式赋给左边
| | |
| 运算符 |
描述 |
| = |
赋值,将一个表达式的值给左边 |
| += |
相加再赋值 |
| -= |
相减再赋值 |
| *= |
相乘再赋值 |
| /= |
相除再赋值 |
| %= |
相余再赋值 |
| << = |
左移后赋值 |
| >> = |
右移后赋值 |
| &= |
按位与后赋值 |
| |
= |
| ^= |
按位异或后赋值 |