मैं जूलिया में इसके द्विआधारी प्रतिनिधित्व में एक ऋणात्मक संख्या का प्रतिनिधित्व कैसे करूं?

मैंने जो कोशिश की है वह यहां है:

Int(0b10)

अपेक्षित के रूप में रिटर्न 2। अब, पहले बिट को संख्या के संकेत का प्रतिनिधित्व करना चाहिए और इस प्रकार कोई निम्नलिखित को संकलित करने की अपेक्षा कर सकता है:

Int(1b10)

लेकिन यह नहीं है। वास्तव में यह निम्न त्रुटि देता है:

UndefVarError: b01 not defined

और ज़ाहिर सी बात है कि:

bin(-1)

रिटर्न

"-1"

जो वास्तव में ऋणात्मक संख्या का द्विआधारी प्रतिनिधित्व नहीं है।

कोई विचार?

संपादित करें - समाधान मिला:

 unsigned(-1)
 0xffffffffffffffff

और फिर आपको बस इतना करना है:

bin(unsigned(-1))
"1111111111111111111111111111111111111111111111111111111111111111"
2
user2550228 8 जुलाई 2018, 13:04

1 उत्तर

सबसे बढ़िया उत्तर

कई अन्य भाषाओं की तरह, जूलिया हस्ताक्षरित पूर्णांकों का प्रतिनिधित्व करने के लिए Two's complement का उपयोग करती है। एक ऋणात्मक संख्या का प्रतिनिधित्व करने के लिए, आप इसका बिट प्रतिनिधित्व प्राप्त करने के लिए bits का उपयोग कर सकते हैं a.k.a इसके सकारात्मक भाग के द्विआधारी प्रतिनिधित्व के दो पूरक लेते हैं:

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"
1
Gnimuc 8 जुलाई 2018, 17:15