如何用Julia的二进制表示形式表示负数?
这是我尝试过的:
Int(0b10)
按预期返回2。现在,第一位应该代表数字的符号,因此人们可能期望以下内容进行编译:
Int(1b10)
但不是。实际上,它返回以下错误:
UndefVarError: b01 not defined
当然:
bin(-1)
返回
“-1”
实际上不是负数的二进制表示形式。
有什么想法吗?
EDIT -找到解决方案:
unsigned(-1)
0xffffffffffffffff
然后您要做的就是:
bin(unsigned(-1))
"1111111111111111111111111111111111111111111111111111111111111111"
答案 0 :(得分:0)
与许多其他语言一样,Julia使用Two's complement
来表示有符号整数。要表示负数,可以使用bits
来获取其位表示形式,也就是采用其正数部分的二进制表示形式的二进制补码:
help?> bits
search: bits isbits flipbits! bitbroadcast bitrand BitArray BitVector BitMatrix signbit LibGit2
bits(n)
A string giving the literal bit representation of a number.
Example
≡≡≡≡≡≡≡≡≡
julia> bits(4)
"0000000000000000000000000000000000000000000000000000000000000100"
julia> bits(2.2)
"0100000000000001100110011001100110011001100110011001100110011010"
julia> bits(-1)
"1111111111111111111111111111111111111111111111111111111111111111"