Go运算符「你怎么又搞特殊,比别人多了点东西啊」

算数运算符

运算符 描述
+ 相加
- 相减
/ 相除
% 求余
++ 自增
自减

与其它语言有差异的是,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
*/

欢迎大家关注下个人的「公众号」:独醉贪欢

猜你喜欢

转载自blog.csdn.net/weixin_41640994/article/details/105170896
今日推荐