Julia 为什么十六进制数或二进制数的类型是Uint64,而十进制数的类型是Int64?

Julia 为什么十六进制数或二进制数的类型是Uint64,而十进制数的类型是Int64?,julia,Julia,我觉得这个结果有点令人惊讶。为什么数字的基数决定有符号或无符号?看起来这是预期的行为: 此行为基于以下观察结果:当使用unsigned 对于整数值,通常使用十六进制文字 表示固定的数字字节序列,而不仅仅是整数 价值观 …这似乎有点奇怪。这是一个主观的决定,但我认为效果相当不错。根据我的经验,当您使用十六进制或二进制时,您会对特定的位模式感兴趣,并且通常希望它是无符号的。当你对一个数值感兴趣时,你可以使用十进制,因为这是我们最熟悉的。此外,当您使用十六进制或二进制时,用于输入的位数通常是重要的,

我觉得这个结果有点令人惊讶。为什么数字的基数决定有符号或无符号?

看起来这是预期的行为:

此行为基于以下观察结果:当使用unsigned 对于整数值,通常使用十六进制文字 表示固定的数字字节序列,而不仅仅是整数 价值观


…这似乎有点奇怪。

这是一个主观的决定,但我认为效果相当不错。根据我的经验,当您使用十六进制或二进制时,您会对特定的位模式感兴趣,并且通常希望它是无符号的。当你对一个数值感兴趣时,你可以使用十进制,因为这是我们最熟悉的。此外,当您使用十六进制或二进制时,用于输入的位数通常是重要的,而在十进制中则不是。这就是文字在Julia中的工作原理:decimal给你一个带符号的整数,它的值适合这种类型,而hex和binary给你一个无符号的值,它的存储大小由位数决定。

julia> typeof(-0b111)
Uint64

julia> typeof(-0x7)
Uint64

julia> typeof(-7)
Int64