一. 整型概述

  • 在Go语言中可以进行数学运算的类型分为整型和浮点型
  • 所有的整数数字存储到整型中就可以进行数学运算
    • 整型和整型运算的结果还是整型.(5/2=2)
    • 都是整型,但是int8和int16之间不可以进行运算,必须进行类型转换
  • 整型分为有符号整型和无符号整型

    • 有符号整型有正数和负数.其二进制最高位表示符号,0为正数1为负数.int和intx为有符号整型
      1. //int8 举例
      2. 0000 0010=2
      3. 1000 0010=-2
  • 无符号整型只能取大于等于0的整数.其二进制最高位表示真实数字.unit和unitx为无符号整型

    1. //uint8 举例
    2. 0000 0010=2
    3. 1000 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语言是静态类型语言,并且不具备低精度向高精度自动转换功能,所以不同类型变量之间相互赋值需要进行类型转换.
  • 例如:

    1. func main() {
    2. //声明3个类型变量
    3. var a int = 1
    4. var b int32 = 2
    5. var c int64 = 3
    6. fmt.Println(a, b, c)
    7. //把int32转换为int64
    8. a = int(b)
    9. fmt.Println(a, b)
    10. a = 1
    11. //把int64转换成int32
    12. b = int32(c)
    13. fmt.Println(b, c)
    14. b = 2
    15. //把int转换为int64
    16. c = int64(a)
    17. fmt.Println(a, c)
    18. c = 3
    19. }

三.不同进制整数

  • 支持八进制,十进制,十六进制数字创建整型,最后由系统转换为十进制
  • 不支持二进制值

    1. func main() {
    2. //默认表示十进制
    3. d := 17
    4. //0开头表示八进制
    5. o := 021
    6. //0x开头表示十六进制
    7. x := 0x11
    8. //e2表示10的2次方
    9. e := 11e2
    10. //输出
    11. fmt.Println(d, o, x, e)
    12. //把变量d中内容转换为二进制
    13. b := fmt.Sprintf("%b", d)
    14. fmt.Println(b)
    15. }