运算符用于在程序运行时执行数学或逻辑运算。
Go语言内置的运算符有:
- 算术运算符
- 关系运算符
- 逻辑运算符
- 位运算符
- 赋值运算符
- 其他运算符
算术运算符
- 算术运算符主要有:+、-、*、/、%(求余)、++(自增)、–(自减)
关系运算符
- 关系运算符主要有:==、!=、>、<、>=、<=
逻辑运算符
- 逻辑运算符主要有:&&(逻辑AND)、|| (逻辑OR)、! (逻辑NOT)
位运算符
位运算符对整数在内存中的二进制进行操作。
位运算符比一般的算术运算符速度要快,而且可以实现一些算术运算符不能实现的功能。如果要开发高效率程序,位运算符是必不可少的。位运算符用来对二进制进行操作,包括:按位与(&)、按位或(|)、按位异或(^)、按位左移(<<)、按位右移(>>)
按位与
按位与(&):对两个数进行操作,然后返回一个新的数,这个数的每个位都需要两个输入数的同一位都为1时 才为1。简单的说:同一位同时为1 则为1
按位或
按位或(|):比较两个数,然后返回一个新的数,这个数的每一位置设置1的条件是任意一个数的同一位为1 则为1。简单的说:同一位其中一个为1 则为1
按位异或
按位异或(^):比较两个数,然后返回一个数,这个数的每一位设为1的条件是两个输入数的同一位不同 则为1,如果相同就设为 0 。简单的说:同一位不相同 则为1
左移运算符(<<)
按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零
- 语法格式:
- 需要移位的数字 << 移位的次数
- 例如:3 << 4,则是将 数字3 左移了4位
- 计算过程:
- 3 << 4
- 首先把 3 转换为 二进制数字 0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出。其他的数字都朝左平移4位,最后在 低位(右侧)的两个空位补零,则得到的最终结果为 0000 0000 0000 0000 0000 0000 0011 0000,则转换为十进制为 48
- 用 3 * 2 ^4 计算 更加方便,3 乘以 2 的4次方
- 数字意义
- 在数字没有溢出的前提下,对于正数 和 负数,左移一位 都相当于 乘以 2的一次方,左移 n 位就相当于 乘以2的 n 次方
右移运算符(>>)
按二进制形式把所有的数字都向右移动对应 位移位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数 补1
- 语法格式
- 需要移位的数字 >> 移位的次数
- 例如:11 >> 2,则是将数字 11 右移2位
- 计算过程
- 11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所有在高位补零,则得到的最终结果为 0000 0000 0000 0000 0000 0000 0000 0010,转化为十进制为2
- 用 11 / (2 ^ 2) 计算 更加方便,11 除以 2 的2次方
- 数字意义
- 右移一位相当于 除2,右移 n 位,则相当于 除以2的 n 次方
赋值运算符
赋值运算符有:=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=。
DEMO示例
以下是上面知识点的代码演示:
1 | package main |
运行结果为:
1 | 算术运算符 --- start--- |