GO语言-整型
一. 整型概述
- 在Go语言中可以进行数学运算的类型分为整型和浮点型
- 所有的整数数字存储到整型中就可以进行数学运算
- 整型和整型运算的结果还是整型.(5/2=2)
- 都是整型,但是int8和int16之间不可以进行运算,必须进行类型转换
- 整型分为有符号整型和无符号整型
- 有符号整型有正数和负数.其二进制最高位表示符号,0为正数1为负数.int和intx为有符号整型
1
2
3//int8 举例
0000 0010=2
1000 0010=-2 - 无符号整型只能取大于等于0的整数.其二进制最高位表示真实数字.unit和unitx为无符号整型
1
2
3//uint8 举例
0000 0010=2
1000 0010=130
- 有符号整型有正数和负数.其二进制最高位表示符号,0为正数1为负数.int和intx为有符号整型
- 整型取值范围和作用
- 有符号整数统一公式为:-2的n-1次幂到2的n-1次幂减一
- 无符号整数统一公式为:0到2的n次幂减一
| 类型 | 取值范围 |
| ——: | :————————————— |
| int8 | [-128 , 127] |
| int16 | [-32768 , 32767] |
| int32 | [-2147483648 , 2147483647] Go语言中没有字符类型,所有字符都使用int32存储 |
| int64 | [-9223372036854775808 , 9223372036854775807] |
| int | 受限于计算机系统,系统是多少位,int为多少位 |
| uint8 | [0 , 255] |
| uint16 | [0 , 65535] |
| uint32 | [0 , 4294967295] |
| uint64 | [0 , 18446744073709551615] |
| uint | 受限于计算机系统,系统是多少位,uint为多少位 |
| rune | 与int32类似,常用在获取值的Unicode码 |
| byte | 与uint8类似.强调值为原始数据.一个字节占用8个二进制 |
| uintptr | 大小不确定,类型取决于底层编程 |
二.类型转换
- Go语言是静态类型语言,并且不具备低精度向高精度自动转换功能,所以不同类型变量之间相互赋值需要进行类型转换.
- 例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22func main() {
//声明3个类型变量
var a int = 1
var b int32 = 2
var c int64 = 3
fmt.Println(a, b, c)
//把int32转换为int64
a = int(b)
fmt.Println(a, b)
a = 1
//把int64转换成int32
b = int32(c)
fmt.Println(b, c)
b = 2
//把int转换为int64
c = int64(a)
fmt.Println(a, c)
c = 3
}
三.不同进制整数
- 支持八进制,十进制,十六进制数字创建整型,最后由系统转换为十进制
- 不支持二进制值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20func main() {
//默认表示十进制
d := 17
//0开头表示八进制
o := 021
//0x开头表示十六进制
x := 0x11
//e2表示10的2次方
e := 11e2
//输出
fmt.Println(d, o, x, e)
//把变量d中内容转换为二进制
b := fmt.Sprintf("%b", d)
fmt.Println(b)
}