julia> typeof(-0b111)
Uint64
julia> typeof(-0x7)
Uint64
julia> typeof(-7)
Int64
我发现这个结果有点令人惊讶。为什么数字的数字基数确定了签名或未签名?
答案 0 :(得分:5)
看起来这是预期的行为:
此行为基于观察时使用无符号 整数值的十六进制文字,通常使用它们 表示固定的数字字节序列,而不仅仅是整数 值。
http://docs.julialang.org/en/latest/manual/integers-and-floating-point-numbers/#integers
...似乎有点奇怪的选择。
答案 1 :(得分:3)
这是一个主观的呼吁,但我认为它的效果非常好。根据我使用十六进制或二进制的经验,您对特定的位模式感兴趣 - 而且您通常希望它是无符号的。当你只对一个数值感兴趣时,你使用十进制,因为这是我们最熟悉的。此外,当您使用十六进制或二进制时,用于输入的数字位数通常很大,而在十进制中,则不是。这就是文字在Julia中的工作方式:十进制为你提供了一个符合值的类型的有符号整数,而十六进制和二进制给你一个无符号值,其存储大小由位数决定。