julia> typeof(-0b111)
Uint64
julia> typeof(-0x7)
Uint64
julia> typeof(-7)
Int64
我觉得这个结果有点令人惊讶。为什么数字的数字基数决定了签名或未签名?为什么typeof十六进制数或二进制数Uint64,而十进制数的类型是Int64?
julia> typeof(-0b111)
Uint64
julia> typeof(-0x7)
Uint64
julia> typeof(-7)
Int64
我觉得这个结果有点令人惊讶。为什么数字的数字基数决定了签名或未签名?为什么typeof十六进制数或二进制数Uint64,而十进制数的类型是Int64?
看起来这是预期的行为:
此行为是基于这样的观察,当一个使用整数值无符号 十六进制文字,人们通常在它们使用于 代表一个固定的字节数字序列,而不仅仅是一个整数 的值。
http://docs.julialang.org/en/latest/manual/integers-and-floating-point-numbers/#integers
...似乎有点像一个奇怪的选择的。
这是一个主观的电话,但我认为它工作得很好。根据我的经验,当您使用十六进制或二进制时,您对位的特定模式感兴趣 - 并且您通常希望它是未签名的。如果您只是对数字值感兴趣,则使用小数,因为这是我们最熟悉的。另外,当使用十六进制或二进制时,用于输入的数字数量通常很重要,而在十进制中则不是。所以这就是文字在Julia中的工作方式:十进制给出了一个值的符号整数,而十六进制和二进制给出了一个无符号的值,其存储大小由数位数决定。
雅必须以某种方式定义它。 – 2014-12-08 03:03:30
Cross发布在https://groups.google.com/forum/#!topic/julia-users/M5-LZJTyr4E – IainDunning 2014-12-08 04:48:40