一. 整型概述
- 在Go语言中可以进行数学运算的类型分为整型和浮点型
- 所有的整数数字存储到整型中就可以进行数学运算
- 整型和整型运算的结果还是整型.(5/2=2)
- 都是整型,但是int8和int16之间不可以进行运算,必须进行类型转换
整型分为有符号整型和无符号整型
- 有符号整型有正数和负数.其二进制最高位表示符号,0为正数1为负数.int和intx为有符号整型
//int8 举例0000 0010=21000 0010=-2
- 有符号整型有正数和负数.其二进制最高位表示符号,0为正数1为负数.int和intx为有符号整型
无符号整型只能取大于等于0的整数.其二进制最高位表示真实数字.unit和unitx为无符号整型
//uint8 举例0000 0010=21000 0010=130
整型取值范围和作用
- 有符号整数统一公式为:-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语言是静态类型语言,并且不具备低精度向高精度自动转换功能,所以不同类型变量之间相互赋值需要进行类型转换.
例如:
func main() {//声明3个类型变量var a int = 1var b int32 = 2var c int64 = 3fmt.Println(a, b, c)//把int32转换为int64a = int(b)fmt.Println(a, b)a = 1//把int64转换成int32b = int32(c)fmt.Println(b, c)b = 2//把int转换为int64c = int64(a)fmt.Println(a, c)c = 3}
三.不同进制整数
- 支持八进制,十进制,十六进制数字创建整型,最后由系统转换为十进制
不支持二进制值
func 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)}
