Go基础结构与类型05---程序运算

package main

import (
	"fmt"
	"math"
)

func main() {
	/*加减乘除,求余*/
	fmt.Println("5+3=", 5+3)
	fmt.Println("5-3=", 5-3)
	fmt.Println("5*3=", 5*3)
	fmt.Println("5/3=", 5/3)
	fmt.Println("5%3=", 5%3)

	/*乘方和开方*/
	fmt.Println("5^3=", math.Pow(5,3))
	fmt.Println("125开3次方=", math.Pow(125.0, 1.0/3))

	/*
	四舍五入
	负数的四舍五入原则:先对绝对值四舍五入,再加负号
	*/
	fmt.Println("3.49的四舍五入", math.Round(3.49))
	fmt.Println("-3.49的四舍五入", math.Round(-3.49))
	fmt.Println("3.51的四舍五入", math.Round(3.51))
	fmt.Println("-3.51的四舍五入", math.Round(-3.51))

	/*纯舍,纯入*/
	fmt.Println("3.99的四舍五入", math.Floor(3.99))
	fmt.Println("3.01的四舍五入", math.Ceil(3.01))

	/*绝对值*/
	fmt.Println("-3.14的绝对值", math.Abs(-3.14))

	/*三角函数:参数必须是弧度而不是角度*/
	fmt.Println("30°的正弦=", math.Sin((30.0/180)*math.Pi))
	fmt.Println("30°的余弦=", math.Cos((30.0/180)*math.Pi))
	fmt.Println("30°的正切=", math.Tan((30.0/180)*math.Pi))
	fmt.Println("30°的余切=", 1.0/math.Tan((30.0/180)*math.Pi))

	/*反三角函数*/
	fmt.Println("正弦为0.5的角度是", math.Asin(0.5)) //0.5235987755982989=30度的弧度表示

}

  

比较运算和逻辑运算

/*比较运算
比较运算符:>,<,==,!=,>=,<=
比较运算的结果是布尔值:true或false*/

/*
逻辑运算
逻辑与:两者都为真,结果才为真
逻辑或:两者只要有一个为真,结果就位真
逻辑非:非真为假,非假为真
*/
func main() {
	a1 := (1+1==2)//true
	a0 := (1+1!=2)//false
	b1 := (1+1>=2)//true
	b0 := (1+1<2)//false
	fmt.Println(a1,a0,b1,b0)

	/*逻辑与*/
	fmt.Println(a1 && b1)//true
	fmt.Println(a1 && b0)//false
	fmt.Println(a0 && b1)//false
	fmt.Println(a0 && b0)//false

	/*逻辑或*/
	fmt.Println(a1 || b1)//true
	fmt.Println(a1 || b0)//true
	fmt.Println(a0 || b1)//true
	fmt.Println(a0 || b0)//false

	/*逻辑非*/
	fmt.Println(!a1)//false
	fmt.Println(!a0)//true
	fmt.Println(!b1)//false
	fmt.Println(!b0)//true
}

输出结果:

true false true false
true
false
false
false
true
true
true
false
false
true
false
true

位运算

/*位运算
& 按位与 两位都为1,结果才为1
| 按位或 只要有一位为1,结果就位1
^ 按位异或 两位不相同,结果就为1,否则就为0
>>
<<
*/
func main() {
	//a := 23
	//b := 34
	var a uint8 = 23
	var b uint8 = 34
	fmt.Println(a & b)//2
	fmt.Println(a | b)//55
	fmt.Println(a ^ b)//53

	/*移位运算*/
	fmt.Println(a << 2)//92
	fmt.Println(a >> 2)//5

	/*左移的溢出
	a为无符号8位整型,向左侧溢出后,最高位为数据位*/
	fmt.Println(a << 4)//112
	fmt.Println(a << 5)//1110,0000无符号为224

	/*左移的溢出
	a为有符号8位整型,向左侧溢出后,最高位为符号位---要考虑正负数问题
	最高位为0,非负数
	最高位为1,负数的反码,-1在取反得到绝对值*/
	var c int8 = 23
	fmt.Println(c << 5)//1110,0000有符号为-32
}

输出:

2
55
53
92
5
112
224
-32

  

原文地址:https://www.cnblogs.com/yunweiqiang/p/11745296.html