06:整数和浮点数

待我称王封你为后i 2023-01-09 12:41 223阅读 0赞

Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。本篇我们主要了解下基础类型的数字类型。

整型

Go语言同时提供了有符号和无符号类型的整数。

  • 有符号整数
    在这里插入图片描述
  • 无符号整数
    在这里插入图片描述
  • 与CPU平台机器字大小有关的有符号和无符号整数int和uint
    在这里插入图片描述
    这两种类型都有同样的大小,32或64bit。使用的操作系统不同其在不同的硬件平台上的大小是会有差异的。
  • rune
    rune类型是和int32等价的类型
  • byte
    byte是uint8类型的等价类型

来看个例子,简单打印下一些数据类型的范围:

  1. // 有符号整
  2. fmt.Println("int8:", math.MinInt8, "-", math.MaxInt8)
  3. fmt.Println("int16:", math.MinInt16, "-", math.MaxInt16)
  4. fmt.Println("int32:", math.MinInt32, "-", math.MaxInt32)
  5. fmt.Println("int64:", math.MinInt64, "-", math.MaxInt64)
  6. // 无符号整数
  7. fmt.Println("MaxUint8:", math.MaxUint8)
  8. fmt.Println("MaxUint16:", math.MaxUint16)
  9. fmt.Println("MaxUint32:", math.MaxUint32)
  10. // 注意这里使用Println的时候默认为int值,MaxUint64是一个大小超过int的常量
  11. // 如果不做转化那么会出现编译错误:constant 18446744073709551615 overflows int
  12. fmt.Println("uint64:", uint64(math.MaxUint64))
  13. //fmt.Println("uint64:", math.MaxUint64)

在这里插入图片描述
还有一种无符号的整数类型uintptr,没有指定具体的bit大小(一般用来存储指针),该类型只有在底层编程时才需要。

有符号整数采用2的补码形式表示,也就是最高bit位用来表示符号位,一个n-bit的有符号数的值域是从 − 2 n − 1 -2^{n-1} −2n−1到 2 n − 1 − 1 2^{n-1}-1 2n−1−1。无符号整数的所有bit位都用于表示非负数,值域是0到 2 n − 1 2^n-1 2n−1。

这里是引用

  1. fmt.Printf("%b\n", -10)
  2. fmt.Printf("%b\n", 10)

在这里插入图片描述

  • 整数的表达方式

在这里插入图片描述

  1. /* 进制数字中间可以使用下划线_进行分割,以便于阅读 二进制:以0b开头,后面接二进制数字,如ob10100、0b_01_01_00、0b_10100 八进制:以零(0) 、0o(小写字母o)、0O(大写字母O)开头,后面接八进制数字,下划线分割同二进制示例 十进制:数字 十六进制:以0x或者0X开头,下划线分割同二进制示例 */
  2. binaryNumber := 0b10100
  3. octalNumber := 0o24
  4. octalNumber2 := 0o24
  5. octalNumber3 := 024
  6. decimalNumber := 20
  7. hexNumber := 0x14
  8. hexNumber2 := 0x14

浮点数

Go语言提供了两种精度的浮点数,float32和float64。

在这里插入图片描述

  • 浮点数的表达方式
    在这里插入图片描述
  • 浮点数的存储
    对于32位的浮点数来说,有效bit位只有23个,其它的bit位用于指数和符号(最高位表示符号,接着8位表示指数)
    对于64位的浮点数来说,最高位表示符号,接着11位表示指数,剩下的52位就是实际的有效位数

在这里插入图片描述
在这里插入图片描述

  1. floatVar := 72.4
  2. floatVar2 := 1e6
  3. floatVar3 := 1.e+0
  4. floatVar4 := 0x2.3p+6
  5. floatVar5 := 0x2.3p-6

复数

Go语言提供了两种精度的复数类型:complex64和complex128,分别对应float32和float64两种浮点数精度。内置的complex函数用于构建复数,内建的real和imag函数分别返回复数的实部和虚部:

  1. var x complex64 = complex(1, 2)
  2. var y complex128 = complex(3, 4)

如果一个浮点数面值或一个十进制整数面值后面跟着一个i,例如3.0i或2i,它将构成一个复数的虚部,复数的实部是0.

其中一个复数常量可以加到另一个普通数值常量,所以上例中可以简写为:

  1. x := 1 + 2i
  2. y := 3 + 4i

运算符

在这里插入图片描述

对于算术运算、逻辑运算和比较运算的二元运算符,它们的优先级递减的顺序如下:

  1. * / % << >> & &^
  2. * - | ^
  3. == != < <= > >=
  4. &&
  5. ||
  • 比较运算符

    == 等于
    != 不等于
    < 小于
    <= 小于等于

    1. 大于

    = 大于等于

  • 位运算符

    & 位运算 AND
    | 位运算 OR
    ^ 位运算 XOR
    &^ 位清空 (AND NOT)
    << 左移

    1. 右移

使用fmt打印格式化的数字

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,223人围观)

还没有评论,来说两句吧...

相关阅读