运算符

算数运算符

注意++(自增)和- -(自减)在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

赋值运算

都是将右边的值或者表达式赋给左边

  
运算符 描述
= 赋值,将一个表达式的值给左边
+= 相加再赋值
-= 相减再赋值
*= 相乘再赋值
/= 相除再赋值
%= 相余再赋值
<< = 左移后赋值
>> = 右移后赋值
&= 按位与后赋值
  =
^= 按位异或后赋值
posted @ 2023-02-08 20:37  suknna  阅读(71)  评论(0)    收藏  举报