Go语言入门:输入输出与计算机进制

93 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 9 天,点击查看活动详情


1.输出格式

如果我们打算输出一个变量的具体类型,可以用Printf函数,"%T" + 变量名 打印

Println和Print的区别在于加”ln“表示换行输出。

如果打算把数值对应的变量名也打印可以这么写fmt.Println("num1 = " , num1);这里面的“,”逗号相当于Java里的 “+”号

Printf:和C语言的printf函数一样,一定要指明输出一个什么类型的值。比如%d表示输出的是一个整型标量中的值。

func main() {
   num1 := 10
   num2 := 20
   num1, num2 = num2, num1
   fmt.Println(num1, num2)
   fmt.Printf("%d\n", num1) // \n表示换行输出
}

2.输入格式

Go提供了两个输入函数,Scanf()和Scan()。

Scanf()使用方法和C语言的scanf()一样,要先指明输入什么类型的值,再把想赋值的变量写进去用逗号隔开,并加上**&符号(&表示要获取这个变量的内存地址,即取地址符号**)

输入数据后敲回车键表示输入结束

func main() {
   var age int
   fmt.Println("请输入年龄")
   fmt.Scanf("%d", &age)
   fmt.Println("age = ", age)
}

我们可以用变量标记一块内存地址,并通过"&变量名"的方式打印出地址,比如fmt.Println(&age),要注意地址和变量的值无关,变量的声明只是标记了一块地址,更方便程序员去找到它。如果用Printf函数打印地址记得用"%p"

Scan()的使用比较简单,不需要说明类型,只需要在变量前加一个取地址符就行。比如fmt.Scan(&age)

总结

Scanf()语法格式:fmt.Scanf("%_", &num)

Scan()语法格式:fmt.Scan(&num)


3.计算机进制

进位的规则一定是:逢N进1

  1. 进制的定义:按进位的原则进行计数的方法叫做进位计数制

  2. 特点:使用一组固定的数字表示数值的大小。比如十进制是0~9这十个数,逢十进一。

  3. 进制要素:基数和位权

    • 基数:这里的N叫做基数。就是指各种进制计数制中允许选用基本数码的个数。比如10就是十进制的基数,因为逢十进一
    • 位权:215 = 2* 10^2^ + 1*10^1^ + 5 *10^0^ 其中10^2^,10^1^,10^0^ 就是位权
    • 按权相加法:让每一位上的数字字符乘以它所代表的权。
  4. 二进制:只由0和1来表示的数,计算机内部的所有运算操作都是用二进制来表示的

  5. 十六进制:一般用数字0~9和字母A到F(或a-f)表示

进制转换

二进制转换成十进制,采用按权相加法。比如二进制1011转换成十进制:1011 -> 1 * 2的3次方 + 0 * 2的2次方 + 1 * 2的1次方 + 1 * 2的0次方

十进制转二进制,采用“除2取余,逆排序”法,如下图片所示,115转换成二进制就是1110011

image.png