2009-06-28 16 views
46

में संख्याओं का मुद्रण बिट प्रतिनिधित्व मैं कंसोल पर संख्याओं के बिट प्रतिनिधित्व को प्रिंट करना चाहता हूं, ताकि मैं बिट्स पर किए जा रहे सभी कार्यों को देख सकूं।पायथन

मैं इसे पाइथन में कैसे कर सकता हूं?

उत्तर

56

बात इस तरह की?

>>> ord('a') 
97 
>>> hex(ord('a')) 
'0x61' 
>>> bin(ord('a')) 
'0b1100001' 
+1

सख्त होने के नाते, यह संख्या का द्विआधारी प्रतिनिधित्व है, लेकिन आवश्यक रूप से स्मृति में अंतर्निहित बिट्स नहीं है। – bgusach

24

अजगर 2.6+ में: में

print bin(123) 

परिणाम:

0b1111011 

अजगर 2.x

>>> binary = lambda n: n>0 and [n&1]+binary(n>>1) or [] 
>>> binary(123) 
[1, 1, 0, 1, 1, 1, 1] 

ध्यान दें, उदाहरण में से लिया: " मार्क डुफोर "पर http://mail.python.org/pipermail/python-list/2003-December/240914.html

+1

आप आगे जोड़ सकते हैं बिन = लैम्ब्डा ख:। '0b' + '' में शामिल होने (यहाँ एक उदाहरण समारोह है, यह एक सूची/सरणी और समूह चौड़ाई लेता है नक्शा (str, बाइनरी (बी))), तो यह 2.6+ पूरी तरह से –

+0

की नकल करता है, मैं निश्चित लंबाई बाइनरी संख्या के लिए समायोजित करने के लिए 0 के साथ बाइनरी को जोड़ना चाहता हूं। – VaidAbhishek

+1

'बिन (-7)' रिटर्न '-0b111' लेकिन आपका फ़ंक्शन' [] 'लौटाता है। –

19

अजगर 2.6 से - string.format method साथ:

"{0:b}".format(0x1234) 
विशेष रूप से

, तो आप ऐसा अलग नंबरों का अनेक बार प्रिंट अभी भी लाइन अप, गद्दी उपयोग करने के लिए पसंद कर सकते हैं:

"{0:16b}".format(0x1234) 

और रिक्त स्थान के बजाय अग्रणी 0s के साथ पैडिंग छोड़ दिया है:

"{0:016b}".format(0x1234) 

अजगर 3.6 से - f-strings साथ:

ही तीन उदाहरण, च-तार के साथ, होगा:

f"{0x1234:b}" 
f"{0x1234:16b}" 
f"{0x1234:016b}" 
1

थोड़ा विषय से हटकर, लेकिन उपयोगी हो सकता है। बेहतर उपयोगकर्ता के अनुकूल मुद्रण के लिए मैं कस्टम प्रिंट फ़ंक्शन का उपयोग करता हूं, बेहतर पठनीयता के लिए प्रतिनिधित्व वर्ण और समूह अंतर को परिभाषित करता हूं।

def bprint(A, grp): 
    for x in A: 
     brp = "{:08b}".format(x) 
     L=[] 
     for i,b in enumerate(brp): 
      if b=="1": 
       L.append("k") 
      else: 
       L.append("-") 
      if (i+1)%grp ==0 : 
       L.append(" ") 

     print "".join(L) 

#run 
A = [0,1,2,127,128,255] 
bprint (A,4) 

आउटपुट::

---- ---- 
---- ---k 
---- --k- 
-kkk kkkk 
k--- ---- 
kkkk kkkk