算数运算符
运算符 | 描述 |
---|---|
+ | 相加 |
- | 相减 |
/ | 相除 |
% | 求余 |
++ | 自增 |
– | 自减 |
与其它语言有差异的是,Go 语言不支持前置自增,也就是不支持 ++A 或者 --A
算数运算符的执行情况
package main
import "fmt"
func main(){
//声明两个变量,A 和 B
var A, B int = 1314, 520
fmt.Println("A + B = ", A + B)
fmt.Println("A - B = ", A - B)
fmt.Println("A * B = ", A * B)
fmt.Println("A / B = ", A / B)
fmt.Println("A % B = ", A % B)
A++
B++
fmt.Println("A 的自增为:", A)
fmt.Println("B 的自增为:", B)
A--
B--
fmt.Println("A 的自减为:", A)
fmt.Println("B 的自减为:", B)
}
/*
输出:
A + B = 1834
A - B = 794
A * B = 683280
A / B = 2
A % B = 274
A 的自增为: 1315
B 的自增为: 521
A 的自减为: 1314
B 的自减为: 520
*/
注意:自增只能单独作为 “语句”,而不能放在 “表达式” 中
比较运算符
运算符 | 描述 |
---|---|
== | 检查两个值是否「相等」,如果相等返回 True,否则返回 False |
!= | 检查两个值是否「不相等」,如果不相等返回 True,否则返回 False |
> | 检查左边值是否「大于」右边值,如果大于返回 True,否则返回 False |
< | 检查左边值是否「小于」右边值,如果小于返回 True,否则返回 False |
>= | 检查左边值是否「大于等于」右边值,如果是返回 True,否则返回 False |
<= | 检查左边值是否 「小于等于」右边值,如果是返回 True,否则返回 False |
比较运算符的执行情况
package main
import "fmt"
func main(){
//声明两个变量,A 和 B
var A, B int = 1314, 520
fmt.Println("A == B为:",A == B)
fmt.Println("A != B为:",A != B)
fmt.Println("A > B为:",A > B)
fmt.Println("A < B为:",A < B)
fmt.Println("A >= B为:",A >= B)
fmt.Println("A <= B为:",A <= B)
}
/*
输出:
A == B为: false
A != B为: true
A > B为: true
A < B为: false
A >= B为: true
A <= B为: false
*/
位运算符
运算符 | 描述 |
---|---|
& | “与” 运算符 |
| | “或” 运算符 |
^ | “异或” 运算符 |
<< | 左移运算符 |
>> | 右移运算符 |
位运算符的执行情况
package main
import "fmt"
func main(){
//声明两个变量,A 和 B
var A, B int = 5, 6
//5 的二进制为 0000 0101
//6 的二进制为 0000 0110
fmt.Println("A & B为:", A & B) // 结果的二进制为:0000 0100
fmt.Println("A | B为:", A | B) // 结果的二进制为:0000 0111
fmt.Println("A ^ B为:", A ^ B) // 结果的二进制为:0000 0011
//这里的 1 表示,向左或向右移动一位
fmt.Println("A << 1为:", A << 1) // 结果的二进制为:0000 1010
fmt.Println("A >> 1为:", A >> 1) // 结果的二进制为:0000 0101
fmt.Println("B << 1为:", B << 1) // 结果的二进制为:0000 1100
fmt.Println("B >> 1为:", B >> 1) // 结果的二进制为:0000 0110
}
/*
输出:
A & B为: 4
A | B为: 7
A ^ B为: 3
A << 1为: 10
A >> 1为: 2
B << 1为: 12
B >> 1为: 3
*/
记住几点:两者对比,有几种情况,1 比 1,1 比 0,0 比 0
- 与,两数字二进制位同为 1 才为 1「一一才为一,其它皆为零」
- 或,两数字二进制位为1 就是 1「零零才为零,其它皆为一」
- 异或,两数字二进制位不同,才为 1「相同为零,不同为一」
- 左移,二进制位,只要是 1,都向左移动一位「相当于,本身乘以2」
- 右移,二进制位,只要是 1,都向右移动一位「相当于,本身除以2」
以上的位运算符基本上所有语言都一样,在「Go」中,多了个特殊的位运算符,这个运算符叫做 “按位置零”,符号表示为 &^
&^ 的规则为:无论前面数的二进制位为 1或者0,只要后面的数的二进制位的数为0,即新变成的位为1,如果后面的二进制位的数为1,即新变成的位为0
按位置零的执行情况
package main
import "fmt"
func main(){
//声明两个变量,A 和 B
var A, B int = 5, 6
//5 的二进制为 0000 0101
//6 的二进制为 0000 0110
fmt.Println("A &^ B为", A &^ B) // 结果的二进制为: 0000 0001
}
/*
输出:
A &^ B为 1
*/
欢迎大家关注下个人的「公众号」:独醉贪欢