06:整数和浮点数 待我称王封你为后i 2023-01-09 12:41 108阅读 0赞 Go语言将数据类型分为四类:基础类型、复合类型、引用类型和接口类型。本篇我们主要了解下基础类型的数字类型。 ## 整型 ## Go语言同时提供了有符号和无符号类型的整数。 * 有符号整数 ![在这里插入图片描述][20210121115422561.png] * 无符号整数 ![在这里插入图片描述][20210121115432423.png] * 与CPU平台机器字大小有关的有符号和无符号整数int和uint ![在这里插入图片描述][20210121115732983.png] 这两种类型都有同样的大小,32或64bit。使用的操作系统不同其在不同的硬件平台上的大小是会有差异的。 * rune rune类型是和int32等价的类型 * byte byte是uint8类型的等价类型 来看个例子,简单打印下一些数据类型的范围: // 有符号整 fmt.Println("int8:", math.MinInt8, "-", math.MaxInt8) fmt.Println("int16:", math.MinInt16, "-", math.MaxInt16) fmt.Println("int32:", math.MinInt32, "-", math.MaxInt32) fmt.Println("int64:", math.MinInt64, "-", math.MaxInt64) // 无符号整数 fmt.Println("MaxUint8:", math.MaxUint8) fmt.Println("MaxUint16:", math.MaxUint16) fmt.Println("MaxUint32:", math.MaxUint32) // 注意这里使用Println的时候默认为int值,MaxUint64是一个大小超过int的常量 // 如果不做转化那么会出现编译错误:constant 18446744073709551615 overflows int fmt.Println("uint64:", uint64(math.MaxUint64)) //fmt.Println("uint64:", math.MaxUint64) ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70] 还有一种无符号的整数类型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。 > ![这里是引用][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 1] fmt.Printf("%b\n", -10) fmt.Printf("%b\n", 10) ![在这里插入图片描述][20210125173501386.png] * 整数的表达方式 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 2] /* 进制数字中间可以使用下划线_进行分割,以便于阅读 二进制:以0b开头,后面接二进制数字,如ob10100、0b_01_01_00、0b_10100 八进制:以零(0) 、0o(小写字母o)、0O(大写字母O)开头,后面接八进制数字,下划线分割同二进制示例 十进制:数字 十六进制:以0x或者0X开头,下划线分割同二进制示例 */ binaryNumber := 0b10100 octalNumber := 0o24 octalNumber2 := 0o24 octalNumber3 := 024 decimalNumber := 20 hexNumber := 0x14 hexNumber2 := 0x14 ## 浮点数 ## Go语言提供了两种精度的浮点数,float32和float64。 ![在这里插入图片描述][20210125174856861.png] * 浮点数的表达方式 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 3] * 浮点数的存储 对于32位的浮点数来说,有效bit位只有23个,其它的bit位用于指数和符号(最高位表示符号,接着8位表示指数) 对于64位的浮点数来说,最高位表示符号,接着11位表示指数,剩下的52位就是实际的有效位数 > ![在这里插入图片描述][20210126103530299.png] > ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 4] floatVar := 72.4 floatVar2 := 1e6 floatVar3 := 1.e+0 floatVar4 := 0x2.3p+6 floatVar5 := 0x2.3p-6 ## 复数 ## Go语言提供了两种精度的复数类型:complex64和complex128,分别对应float32和float64两种浮点数精度。内置的complex函数用于构建复数,内建的real和imag函数分别返回复数的实部和虚部: var x complex64 = complex(1, 2) var y complex128 = complex(3, 4) 如果一个浮点数面值或一个十进制整数面值后面跟着一个i,例如3.0i或2i,它将构成一个复数的虚部,复数的实部是0. 其中一个复数常量可以加到另一个普通数值常量,所以上例中可以简写为: x := 1 + 2i y := 3 + 4i ## 运算符 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 5] 对于算术运算、逻辑运算和比较运算的二元运算符,它们的优先级递减的顺序如下: * / % << >> & &^ * - | ^ == != < <= > >= && || * 比较运算符 == 等于 != 不等于 < 小于 <= 小于等于 > 大于 >= 大于等于 * 位运算符 & 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 ## 使用fmt打印格式化的数字 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 6] [20210121115422561.png]: /images/20221119/17c2df96100c4d6e8a885db8566470d4.png [20210121115432423.png]: /images/20221119/9884348aba52423cb82da2543b1c744a.png [20210121115732983.png]: /images/20221119/420089820dcc4679bcda98afef9edb99.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70]: https://img-blog.csdnimg.cn/20210121160244433.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 1]: https://img-blog.csdnimg.cn/20210125164609518.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70 [20210125173501386.png]: https://img-blog.csdnimg.cn/20210125173501386.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 2]: https://img-blog.csdnimg.cn/2021012517530522.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70 [20210125174856861.png]: https://img-blog.csdnimg.cn/20210125174856861.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 3]: https://img-blog.csdnimg.cn/20210125174658471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70 [20210126103530299.png]: https://img-blog.csdnimg.cn/20210126103530299.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 4]: https://img-blog.csdnimg.cn/20210125183716822.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 5]: https://img-blog.csdnimg.cn/20210126174604416.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70 [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU_size_16_color_FFFFFF_t_70 6]: https://img-blog.csdnimg.cn/20210126174929781.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Fpbmd5dWxvdmU=,size_16,color_FFFFFF,t_70
还没有评论,来说两句吧...