Go核心编程(7)—— 入门篇之位运算符和其他运算符

位运算符

运算符描述实例
&按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。(A & B) 结果为 12, 二进制为 0000 1100
|按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或(A | B) 结果为 61, 二进制为 0011 1101
^按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(A ^ B) 结果为 49, 二进制为 0011 0001
<<左移运算符"<<“是双目运算符。左移n位就是乘以2的n次方。 其功能把”<<“左边的运算数的各二进位全部左移若干位,由”<<"右边的数指定移动的位数,高位丢弃,低位补0。A << 2 结果为 240 ,二进制为 1111 0000
>>右移运算符">>“是双目运算符。右移n位就是除以2的n次方。 其功能是把”>>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。A >> 2 结果为 15 ,二进制为 0000 1111

Golang中有三个位运算符

分别是:按位与&、按位或|、按位异或^,他们的运算规则如下

按位与&:两位全为1,结果为1.否则为0

按位或|:两位有一个为1,结果为1,否则为0

按位异或^:两位一个为0,一个为1,结果为1,否则为0

位运算案例

package main
import (
	"fmt"
)

func main(){

	//位运算的演示
	fmt.Println(2&3)  // 2

	fmt.Println(2|3)  // 3

	fmt.Println(2^3)  // 1

}

移位运算符

运算规则

右移运算符>>:低位溢出,符号位不变,并用符号位补溢出的高位

左移运算符<<:符号位不变,低位补0

移位运算案例

package main
import (
	"fmt"
)

func main(){

	var a int = 1 >> 2
	var b int = -1 >> 2
	var c int = 1 << 2
	var d int = -1 << 2
	//a、b、c、d的结果是多杀
	fmt.Println("a=",a) // 0
	fmt.Println("b=",b) // -1
	fmt.Println("c=",c) // 4
	fmt.Println("d=",d) // -4    

}

其他运算符

运算符描述实例
&返回变量存储地址&a; 将给出变量的实际地址。
*指针变量。*a; 是一个指针变量

练习案例

案例1:求出两个数的最大值

案例2:求出三个数的最大值

package main
import (
	"fmt"
)

func main(){

	//求两个数的最大值
	var n1 int = 10
	var n2 int = 30
	var max1 int
	if n1 > n2 {
		max1 = n1
	}else {
		max1 = n2
	}
	fmt.Println("max1=",max1)

	//求三个数的最大值,	先求出两个数的最大值再跟第三个数进行比较,方法1
	var n3 int = 40
	var max2 int
	if n3 > max1 {
		max2 = n3
	}else {
		max2 = max1
	}
	fmt.Println("max2=",max2)
    
    //求三个数的最大值,	先求出两个数的最大值再跟第三个数进行比较,方法2
	var n3 int = 40
	if n3 > max1 {
		max1 = n3
	}
	fmt.Println("max2=",max1)

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值