कैसे आप अजगर में बाइनरी शाब्दिक व्यक्त करते हैं?

वोट
303

कैसे आप अजगर शाब्दिक साथ एक द्विआधारी संख्या के रूप में एक पूर्णांक व्यक्त करते हैं?

मैं आसानी से हेक्स के लिए जवाब खोजने के लिए सक्षम था:

>>> 0x12AF
4783
>>> 0x100
256

और अष्टाधारी:

>>> 01267
695
>>> 0100
64

कैसे आप अजगर में बाइनरी व्यक्त करने के लिए शाब्दिक प्रयोग करते हैं?


जवाब का सारांश

  • अजगर 2.5 और पूर्ववर्ती संस्करण: द्विआधारी का उपयोग कर व्यक्त कर सकते हैं int('01010101111',2)लेकिन एक शाब्दिक के साथ नहीं।
  • अजगर 2.5 और पूर्ववर्ती संस्करण: वहाँ कोई रास्ता नहीं द्विआधारी शाब्दिक व्यक्त करते हैं।
  • अजगर 2.6 बीटा: तुम कितने तरह कर सकते हैं: 0b1100111या 0B1100111
  • अजगर 2.6 बीटा: भी अनुमति देगा 0o27या 0O27एक अष्टाधारी प्रतिनिधित्व करने के लिए (दूसरा चरित्र अक्षर O है)।
  • अजगर 3.0 बीटा: 2.6 के रूप में एक ही है, लेकिन अब बड़े अनुमति देगा 027octals के लिए वाक्य रचना।
04/08/2008 को 19:20
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


6 जवाब

वोट
241

Reference- के लिए भविष्य अजगर संभावनाएं:
अजगर 2.6 के साथ शुरू आप उपसर्ग का उपयोग करके बाइनरी शाब्दिक व्यक्त कर सकते हैं 0b या 0B :

>>> 0b101111
47

तुम भी नए प्रयोग कर सकते हैं बिन एक नंबर के द्विआधारी प्रतिनिधित्व प्राप्त करने के लिए समारोह:

>>> bin(173)
'0b10101101'

दस्तावेज के विकास संस्करण: क्या अजगर 2.6 में नया क्या है

16/08/2008 को 13:35
का स्रोत उपयोगकर्ता

वोट
64
>>> print int('01010101111',2)
687
>>> print int('11111111',2)
255

दूसरा रास्ता।

04/08/2008 को 19:34
का स्रोत उपयोगकर्ता

वोट
11

कैसे आप अजगर में बाइनरी शाब्दिक व्यक्त करते हैं?

वे नहीं "बाइनरी" शाब्दिक रहे हैं, बल्कि, "पूर्णांक शाब्दिक"। आप एक साथ एक द्विआधारी प्रारूप के साथ पूर्णांक शाब्दिक व्यक्त कर सकते हैं 0एक के बाद Bया bशून्य और, उदाहरण के लिए की एक श्रृंखला के द्वारा पीछा किया:

>>> 0b0010101010
170
>>> 0B010101
21

अजगर 3 से डॉक्स , इन अजगर में पूर्णांक शाब्दिक प्रदान करने के तरीके हैं:

पूर्णांक शाब्दिक निम्नलिखित शाब्दिक परिभाषाओं से वर्णित हैं:

integer      ::=  decinteger | bininteger | octinteger | hexinteger
decinteger   ::=  nonzerodigit (["_"] digit)* | "0"+ (["_"] "0")*
bininteger   ::=  "0" ("b" | "B") (["_"] bindigit)+
octinteger   ::=  "0" ("o" | "O") (["_"] octdigit)+
hexinteger   ::=  "0" ("x" | "X") (["_"] hexdigit)+
nonzerodigit ::=  "1"..."9"
digit        ::=  "0"..."9"
bindigit     ::=  "0" | "1"
octdigit     ::=  "0"..."7"
hexdigit     ::=  digit | "a"..."f" | "A"..."F"

अलग क्या उपलब्ध स्मृति में संग्रहीत किया जा सकता से पूर्णांक शाब्दिक की लंबाई के लिए कोई सीमा नहीं है।

ध्यान दें कि एक गैर शून्य दशमलव संख्या में अग्रणी शून्य अनुमति नहीं है। यह सी-शैली अष्टाधारी शाब्दिक, जो अजगर 3.0 संस्करण से पहले इस्तेमाल के साथ बहुविकल्पी के लिए है।

पूर्णांक शाब्दिक के कुछ उदाहरण:

7     2147483647                        0o177    0b100110111
3     79228162514264337593543950336     0o377    0xdeadbeef
      100_000_000_000                   0b_1110_0101

संस्करण 3.6 में परिवर्तित: रेखांकित अब शाब्दिक में प्रयोजनों के समूहीकरण के लिए अनुमति दी जाती है।

द्विआधारी व्यक्त करने का अन्य तरीके:

आप शून्य और एक स्ट्रिंग वस्तु जो (हालांकि आप शायद सिर्फ ज्यादातर मामलों में पूर्णांक पर बिटवाइज़ संचालन करना चाहिए) हेरफेर किया जा सकता में लोगों को हो सकता है - बस शून्य और की स्ट्रिंग और आधार आप से परिवर्तित कर रहे हैं int पारित (2 ):

>>> int('010101', 2)
21

आप वैकल्पिक रूप से हो सकता है 0bया 0Bउपसर्ग:

>>> int('0b0010101010', 2)
170

आप इसे पार कर लेते हैं 0आधार के रूप में, यह अगर स्ट्रिंग एक उपसर्ग के साथ निर्दिष्ट नहीं करता आधार 10 समझेंगे:

>>> int('10101', 0)
10101
>>> int('0b10101', 0)
21

पूर्णांक से परिवर्तित मानव पठनीय द्विआधारी करने के लिए वापस:

आप एक द्विआधारी शाब्दिक की स्ट्रिंग प्रतिनिधित्व को देखने के लिए बिन में एक पूर्णांक पारित कर सकते हैं:

>>> bin(21)
'0b10101'

और अगर आप को जोड़ सकते हैं binऔर intआगे और पीछे जाने के लिए:

>>> bin(int('010101', 2))
'0b10101'

यदि आप पूर्ववर्ती शून्य से न्यूनतम चौड़ाई करना चाहते हैं आप के रूप में अच्छी तरह से एक प्रारूप विनिर्देश उपयोग कर सकते हैं,:

>>> format(int('010101', 2), '{fill}{width}b'.format(width=10, fill=0))
'0000010101'
>>> format(int('010101', 2), '010b')
'0000010101'
14/05/2016 को 11:58
का स्रोत उपयोगकर्ता

वोट
1

शुरुआत में यहां 0 निर्दिष्ट करता है कि आधार 8 (न कि 10) है, जो देखने के लिए बहुत आसान है:

>>> int('010101', 0)
4161

यदि आप एक 0 से आरंभ नहीं करते हैं, तो अजगर मानता संख्या आधार 10 है।

>>> int('10101', 0)
10101
21/06/2016 को 22:48
का स्रोत उपयोगकर्ता

वोट
-1

मैं बहुत यकीन है कि यह शायद बिन () के साथ अजगर 3.0 में बदलने के लिए हेक्स () और के साथ जाने की वजह से चीजों अक्टूबर () में से एक है कर रहा हूँ।

संपादित करें: lbrandy का जवाब सभी मामलों में सही है।

04/08/2008 को 19:27
का स्रोत उपयोगकर्ता

वोट
-1

जहाँ तक मेरा अजगर, 2.5 के माध्यम से ऊपर बता सकते हैं, केवल हेक्साडेसिमल और अष्टाधारी शाब्दिक समर्थन करता है। मैं भविष्य के संस्करणों लेकिन निश्चित कुछ भी नहीं करने के लिए द्विआधारी जोड़ने के बारे में कुछ विचार विमर्श मिला।

04/08/2008 को 19:26
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more