uint32是什么数据类型_程序建筑的原材料:基本数据类型

程序运行之初

如果把写程序比作盖房子,那么在建造墙面和屋顶的时候,分别用的是什么材料呢?比如,有砖块和瓦片。虽然形状不同,但它们的组成元素都是类似的:氧化物和一些金属化合物(砂砾石头有二氧化硅,红砖里有铁或铝的化合物)。

类似地,构成程序的无非是一行行可运行的代码,组成代码的又是一个个字节元素,而一个字节又由 8 个 bit 组成。

学过计算机组成原理的小伙伴都知道(没学过的也不影响今天学习的内容),计算机底层就是一个个的位(bit),并无任何区别。但是我们对变量,对数据进行操作时,却是基于一个个大小固定的单元数值(对应砖头和瓦片的使用场景)。比如:整数、浮点数、字符串等等。

计算机是如何进行区分的呢?这就要引出我们今天的主角,数据类型了。

我们先看看看官方是怎么定义的,数据类型:一组性质相同的值的集合以及定义在这个值集合上的一组操作的总称 。

简单来说,同种数据类型,要么特征相同:都是方方正正的砖头,大小和重量规格一致;要么在搭建墙面时可以一起被使用。不同的数据类型指引着计算机做出不同的操作,而我们要做的,就是熟悉这些数据类型,让它们帮我们更好地搭建所需的项目。

我们首先要明白一件事情,就是无论哪种编程语言,对数据类型定义都是极为相似的。所以,当你学会了一种语言的数据类型,以后再熟悉其他语言的数据类型时几乎是易如反掌。

Go语言的数据类型

Go 语言主要有四类数据类型:基础类型、聚合类型、引用类型和接口类型。其中最简单,也是最常见的数据类型是第一种,后三种会在后续的文章中一一介绍,今天我们先学习计算机中最不可或缺的基础类型。

基础类型包含了数字(number)、布尔值(bool)和字符串(string),本章的内容就是带你认识这些日后在项目建筑中常常用到的砖头。

数字(number)

数字是最基本的数据类型,其中有整数、浮点数和复数三大类。

整数

整数分为有符号整数和无符号整数,根据它们所占计算机位长度,分为了四种大小:8位,16位,32位和64位。分别用 int8/uint8,int16/uint16,int32/uint32 和 int64/uint64表示。

有符号整数就是包含负值的整数,它们的第一位表示符号:0为正数,1为负数。比如,数字 3 用 int8 表示为 00000011。根据位数 n 的不同,取值范围是

5761410159f6fd9d87f33f70058de4cf.png

比如,int16 的有符号整数取值范围是 -2^15 ~ 2^15 - 1。无符号整数全是正数,取值范围是

62a0a03238bead63352e92bc72ef8a31.png

例如,uint8 可以从 0 到 255 取值。

浮点数

Go 语言中有两种大小的浮点数:float32 和 float 64,这两个类型的值可以从极细微到超宏大。math 包里给出了它们的极限,常量 math.MaxFloat32 和 math.MaxFloat64 分别是 float32 和 float64 的最大值,前者约为 3.4e38,后者约为 1.8e308。相应地,最小的浮点数 math.MinFloat32 和 math.MinFloat64,它们的大小约为 1.4e-45 和 4.9e-324。

在十进制下,float32 的有效数字大约是 6 位,float64 的有效数字大约是 15 位。Go 语言中,绝大多数情况下我们都使用 float64。因为 float32 的运算会迅速积累误差,引发不可控的错误,而且 float32 能精确表示的正整数范围也很有限,如:

var f float32 = 1 << 24 // 左移24位,表示2^24, 2的24次方

fmt.Println(f == f+1)   // true,累计误差之后出错了
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值