Go学习笔记(3)-运算符

Go学习笔记(3)

运算符

运算符的基本介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等

  1. 算术运算符
  2. 赋值运算符
  3. 比较运算符/关系运算符
  4. 逻辑运算符
  5. 位运算符
  6. 其它运算符

算术运算符

算术运算符是对数值类型的变量进行运算的,比如:加减乘除。在 Go 程序中使用的非常多

算术运算符的一览表

案例演示

案例演示算术运算符的使用。

+, - , * , / , %, ++, -- , 重点讲解 /、%

自增:++

自减:--

演示 / 的使用的特点

演示 % 的使用特点

// 演示 % 的使用 // 看一个公式 a % b = a - a / b * b fmt.Println("10%3=", 10 % 3) // =1 fmt.Println("-10%3=", -10 % 3) // = -10 - (-10) / 3 * 3 = -10 - (-9) = -1 fmt.Println("10%-3=", 10 % -3) // =1 fmt.Println("-10%-3=", -10 % -3) // =-1

++ 和 --的使用

算术运算符使用的注意事项

  1. 对于除号 "/",它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃 小数部分。 例如: x := 19/5 ,结果是 3
  2. 当对一个数取模时,可以等价 a%b=a-a/b*b , 这样我们可以看到 取模的一个本质运算。
  3. Golang 的自增自减只能当做一个独立语言使用时,不能这样使用

  1. Golang 的++ 和 -- 只能写在变量的后面,不能写在变量的前面,即:只有 a++ a-- 没有 ++a --a

  1. Golang 的设计者去掉 c / java 中的 自增自减的容易混淆的写法,让 Golang 更加简洁,统一。(强制性的)

课堂练习 1

课堂练习 2

  1. 假如还有 97 天放假,问:xx 个星期零 xx 天
  2. 定义一个变量保存华氏温度,华氏温度转换摄氏温度的公式为:5/9*(华氏温度-100),请求出华氏温度对应的摄氏温度。

关系运算符(比较运算符)

基本介绍

  1. 关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false
  2. 关系表达式 经常用在 if 结构的条件中或循环结构的条件中

关系运算符一览图

案例演示

关系运算符的细节说明

细节说明

  1. 关系运算符的结果都是 bool 型,也就是要么是 true,要么是 false。
  2. 关系运算符组成的表达式,我们称为关系表达式: a > b
  3. 比较运算符"=="不能误写成 "=" !!

逻辑运算符

基本介绍

用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个 bool 值

逻辑运算的说明

案例演示

注意事项和细节说明

  1. &&也叫短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false
  2. ||也叫短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true
  3. 案例演示

赋值运算符

基本介绍

赋值运算符就是将某个运算后的值,赋给指定的变量。

赋值运算符的分类

赋值运算的案例演示

案例演示赋值运算符的基本使用。

  1. 赋值基本案例
  2. 有两个变量,a 和 b,要求将其进行交换,最终打印结果
  3. += 的使用案例
  4. 案例

赋值运算符的特点

  1. 运算顺序从右往左

  1. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值

  1. 复合赋值运算符等价于下面的效果 比如:a += 3 等价于 a = a + 3

面试题

有两个变量,a 和 b,要求将其进行交换,但是不允许使用中间变量,最终打印结果

位运算符

其它运算符说明

举例说明:

课堂案例

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

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

特别说明

举例说明,如果在 golang 中实现三元运算的效果。

运算符的优先级

运算符的优先级的一览表

对上图的说明

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
  2. 只有单目运算符、赋值运算符是从右向左运算的。
  3. 梳理了一个大概的优先级

​ 1:括号,++, -- ​ 2: 单目运算 ​ 3:算术运算符 ​ 4:移位运算 ​ 5:关系运算符 ​ 6:位运算符 ​ 7:逻辑运算符 ​ 8:赋值运算符 ​ 9:逗号

键盘输入语句

介绍

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。InputDemo.go

步骤 :

  1. 导入 fmt 包
  2. 调用 fmt 包的 fmt.Scanln() 或者 fmt.Scanf()

案例演示:

要求:可以从控制台接收用户信息,【姓名,年龄,薪水, 是否通过考试 】。

  1. 使用 fmt.Scanln() 获取

  1. 使用 fmt.Scanf() 获取

进制

对于整数,有四种表示方式:

  1. 二进制:0,1 ,满 2 进 1。 在 golang 中,不能直接使用二进制来表示一个整数,它沿用了 c 的特点。
  2. 十进制:0-9 ,满 10 进 1。
  3. 八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。
  4. 十六进制:0-9 及 A-F,满 16 进 1. 以 0x 或 0X 开头表示。 此处的 A-F 不区分大小写。

进制的图示

进制转换的介绍

其它进制转十进制

二进制如何转十进制

八进制转换成十进制示例

16 进制转成 10 进制

其它进制转 10 进制的课堂练习

课堂练习:请将

二进制: 110001100 转成 十进制

八进制: 02456 转成十进制

十六进制: 0xA45 转成十进制

十进制如何转成其它进制

十进制如何转二进制

十进制转成八进制

十进制转十六进制

课堂练习

课堂练习:请将

123 转成 二进制

678 转成八进制

8912 转成十六进制

二进制转换成八进制、十六进制

二进制转换成八进制

二进制转成十六进制

课堂练习

课堂练习:请将

二进制:11100101 转成 八进制

二进制:1110010110 转成 十六进制

八进制、十六进制转成二进制

八进制转换成二进制

十六进制转成二进制

位运算

位运算的思考题

  1. 请看下面的代码段,回答 a,b,c,d 结果是多少?
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)
    fmt.Println("b=", b)
    fmt.Println("c=", c)
    fmt.Println("d=", d)
}
  1. 请回答在 Golang 中,下面的表达式运算的结果是:
func main() {
    fmt.Println(2&3)
    fmt.Println(2|3)
    fmt.Println(13&7)
    fmt.Println(5|4) //?
    fmt.Println(-3^3) //?
}

二进制在运算中的说明

二进制是逢 2 进位的进位制,0、1 是基本算符。

现代的电子计算机技术全部采用的是二进制,因为它只使用 0、1 两个数字符号,非常简单方便,易于用电子方式实现。计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binary)数用 0和 1 两个数字及其组合来表示任何数。进位规则是“逢 2 进 1”,数字 1 在不同的位上代表不同的值,按从右至左的次序,这个值以二倍递增。

在计算机的内部,运行各种运算时,都是以二进制的方式来运行。

原码、反码、补码

位运算符和移位运算符

Golang 中有 3 个位运算

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

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

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

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

案例练习

比如:2&3=? 2|3=? 2^3=?

Golang 中有 2 个移位运算符:

>>、<< 右移和左移,运算规则:

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

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

案例演示

a := 1 >> 2 // 0000 0001 =>0000 0000 = 0

c := 1 << 2 // 0000 0001 ==> 0000 0100 => 4

i >> 2 相当于 i / 4
i << 2 相当于 i * 4

i >> 1 相当于 i / 2
i << 1 相当于 i * 2
end
  • 作者:AWhiteElephant(联系作者)
  • 发表时间:2022-05-26 15:53
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 转载声明:如果是转载栈主转载的文章,请附上原文链接
  • 评论