Loading

3.Golang运算符

运算符的基本介绍

  • 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等
    • 算数运算符
    • 赋值运算符
    • 比较运算符/关系运算符
    • 逻辑运算符
    • 位运算符
    • 其它运算符
  • 算数运算符

  • /:如果运算的数都是整数,那么除后,去掉小数部分,保留整数部分
  • %:a%b=a-a/b*b
  • ++、--:Golang的自增自减只能写在变量的后面,不能写在变量的前面,且只能独立使用,不能a=i++

关系运算符

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

逻辑运算符

  • 用于连接多个条件(一般来讲就是关系表达式),最终的结果也是一个bool值
  • &&也叫短路与:如果第一个条件为false,则第二个条件不会判断,最终结果为false
  • ||也叫短路或:如果第一个条件为true,则第二个条件不会判断,最终结果为true

赋值运算符

  • 赋值运算符就是将某个运算后的值,赋给指定的变量
  • 运算顺序从右往左
  • 赋值运算符的左边只能是变量,右边可以是变量、表达式、常量值

位运算符

其他运算符

  • 特别说明:Go语言明确不支持三元运算符

运算符的优先级

键盘输入语句

  • fmt包的fmt.Scanln()或者fmt.Scanf()
  • fmt.Scanln()会在换行时停止扫描,最后一个条目后必须有换行或者达到结束位置
  • fmt.Scanf()从标准输入扫描文本,根据format参数指定的格式将成功读取的空白分割的值保存进
package main

import "fmt"

func main() {
	var name string
	var age byte
	var sal float32
	var isPass bool
	fmt.Println("请输入姓名 ")
	// 当程序执行到fmt.Scanln(&name),程序会停止在这里,等待用户输入并回车
	fmt.Scanln(&name)
	fmt.Println("请输入年龄 ")
	fmt.Scanln(&age)
	fmt.Println("请输入薪水 ")
	fmt.Scanln(&sal)
	fmt.Println("请输入是否通过考试")
	fmt.Scanln(&isPass)
	fmt.Printf("名字是 %v \n 年龄是 %v \n 薪水是 %v \n 是否通过考试 %v \n", name, age, sal, isPass)

	fmt.Println("请输入你的姓名,年龄,薪水,是否通过考试,使用空格隔开")
	fmt.Scanf("%s %d %f %t", &name, &age, &sal, &isPass)
	fmt.Printf("名字是 %v \n 年龄是 %v \n 薪水是 %v \n 是否通过考试 %v \n", name, age, sal, isPass)
}

进制

  • 二进制转十进制:从最低位开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和
  • 八进制转十进制:从最低位开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和
  • 十六进制转十进制:从最低位开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和
  • 十进制转二进制:将该数不断除以2,直到商为0为止,然后将每步得到的余数倒过来,就是对应的二进制
  • 十进制转八进制:将该数不断除以8,直到商为0为止,然后将每步得到的余数倒过来,就是对应的八进制
  • 十进制转十六进制:将该数不断除以16,直到商为0为止,然后将每步得到的余数倒过来,就是对应的十六进制
  • 二进制转八进制:将二进制数每三位一组(从低位开始组合),转成对应的八进制数即可
  • 二进制转成十六进制:将二进制数每四位一组(从低位开始组合),转成对应的十六进制数即可
  • 八进制转二进制:将八进制数每一位,转成对应的一个3位的二进制数即可
  • 十六进制转二进制:将十六进制数每一位,转成对应的一个4位的二进制数即可

原码、反码、补码

  • 对于有符号的而言:
    • 二进制的最高位是符号位:0表示整数,1表示负数
    • 正数的原码、反码、补码都一样
    • 负数的反码=它的原码符号位不变,其它位取反
    • 负数的补码=它的反码+1
    • 0的反码补码都是0
    • 在计算机运算的时候,都是以补码的方式来运算的

位运算符和移位运算符

  • 按位与&:两位全为1,结果为1,否则为0
  • 按位或|:两位有一个为1,结果为1,否则为0
  • 按位异或^:两位不同为1,相同为0
  • 右移运算符>>:低位溢出,符号位不变,并用符号位补溢出的高位
  • 左移运算符<<:符号位不变,低位补0
posted @ 2022-04-05 21:27  lotuslaw  阅读(77)  评论(0编辑  收藏  举报