所有的基础数据类型通过灵活用户可扩展的类型提升系统 ,不需显式类型转换,就可以互相运算
整数的默认类型,取决于系统是 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 类型,除法、求余、位运算则不提升类型