Go语言的整数类型一共有10个。 其中计算架构相关的整数类型有两个,即:有符号的整数类型int 和无符号的整数类型uint 。 顺便提一下,有符号的整数类型会使用最高位的比特(bit)表示整数的正负。显然,这会对它能表示的整数的范围有一定的损耗(使其缩小)。而无符号的整数类型会使用所有的比特位来表示数值。如此类型的值均为正数。这也是用“无符号的”来形容它们的原因。 言归正传,为什么说这两个整数类型是计算架构相关的呢?这是因为,在不同的计算架构的计算机之上,它们体现的宽度是不同的。宽度即指存储一个某类型的值所需要的空间。空间的单位可以是比特,也可以是字节(byte)。请看下表。
我想你应该已经能够悟到它们的对应关系了。 除了这两个计算架构相关的整数类型之外,还有8个可以显式表达自身宽度的整数类型。如下表所示。
可以看到,这8个整数类型的宽度已经表现在它们的名称中了。
我们已经知道了每个整数类型的宽度,那么它们的宽度意味着什么呢?下面这张表已有所描述。
如上所示,类型int8 的数值表示范围为[-128,127],而类型uint16 的数值表示范围为[0,65535],等等。 以我们的常识知道,在数学中整数一般是以10进制来表示的,而在计算机中整数则必是以2进制来表示和存储的。当然,在计算机科学领域,整数的表示形式还包括了8进制和16进制。下面我们就来说说怎样这几种表示法在Go语言中表示整数。 最显而易见的是10进制表示法。如果我们要在声明一个名为num1 的int 类型变量时给它赋予12 这个值,那么这样书写即可:
var num1 int = 12
这是最容易被我们理解的方式了。不过,如果我们要分别以8进制和16进制为变量num1 赋值,那么需要:
num1 = 014 // 用“0”作为前缀以表明这是8进制表示法。
或:
num1 = 0xC // 用“0x”作为前缀以表明这是16进制表示法。
(注意,为已声明的变量赋值,无需再在等号左边加入关键字var 和变量类型)
|
请发表评论