朱莉娅·朗:负二进制数表示

时间:2018-07-08 10:04:25

标签: binary numbers julia

如何用Julia的二进制表示形式表示负数?

这是我尝试过的:

Int(0b10)

按预期返回2。现在,第一位应该代表数字的符号,因此人们可能期望以下内容进行编译:

Int(1b10)

但不是。实际上,它返回以下错误:

UndefVarError: b01 not defined

当然:

bin(-1)

返回

“-1”

实际上不是负数的二进制表示形式。

有什么想法吗?

EDIT -找到解决方案:

 unsigned(-1)
 0xffffffffffffffff

然后您要做的就是:

bin(unsigned(-1))
"1111111111111111111111111111111111111111111111111111111111111111"

1 个答案:

答案 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"