Julia - 整数型
所有的基础数据类型通过灵活用户可扩展的类型提升系统 ,不需显式类型转换,就可以互相运算
整数的默认类型,取决于系统是 32 位还是 64 位
julia> typeof(1) # 32 位系统 Int32 julia> typeof(1) # 64 位系统 Int64
Julia 内部变量 WORD_SIZE 查看系统是 32 位还是 64 位
julia> WORD_SIZE # 32 位系统 32 julia> WORD_SIZE # 64 位系统 64
Julia 定义了 Int 和 UInt 类型,分别是系统原生的有符号和无符号整数类型的别名
julia> Int # 有符号整数类型 Int64 julia> UInt # 无符号整数类型 UInt64
对于不能用 32 位而只能用 64 位来表示的大整数文本,不管系统类型是什么,始终被认为是 64 位整数
julia> typeof(3000000000) # 不管是 32 位还是 64 位 Int64
数值类型的最小值和最大值,可以通过 typemin 和 typemax 函数来查询
julia> typemin(Int64) -9223372036854775808 julia> typemax(Int64) 9223372036854775807 julia> typemin(Int32) -2147483648 julia> typemax(Int32) 2147483647
typemin 和 typemax 的返回值,与所给的参数类型是同一类的
二进制
二进制使用 0b 前缀
julia> 0b10010 0x12 julia> typeof(ans) UInt8
二进制被转换为 0x 开头的十六进制
八进制
八进制使用 0o 前缀
julia> 0o567 0x0177 julia> typeof(ans) UInt16
八进制被转换为 0o 开头的十六进制
十六进制
无符号整数十六进制使用 0x 前缀
无符号数的位数大小,由十六进制数的位数决定
julia> 0x1 0x01 julia> typeof(ans) Uint8 julia> 0x123 0x0123 julia> typeof(ans) Uint16 julia> 0x1234567 0x01234567 julia> typeof(ans) Uint32 julia> 0x123456789abcdef 0x0123456789abcdef julia> typeof(ans) Uint64
溢出
如果计算结果超出数据类型的最大值,就会发生溢出
julia> x = typemax(Int64) 9223372036854775807 julia> x + 1 -9223372036854775808 julia> x + 1 == typemin(Int64) true
为了减小溢出所带来的影响,整数加减法、乘法、指数运算都会把原先范围较小的整数类型提升到 Int 或 UInt 类型,除法、求余、位运算则不提升类型