पायथन में बाइनरी नंबर


81

मैं दशमलव में कनवर्ट किए बिना पायथन में द्विआधारी संख्याओं को कैसे जोड़, घटा, और तुलना कर सकता हूं?


1
क्या यह एक होमवर्क सवाल है, यानी आप पूछ रहे हैं कि निम्न स्तर पर गणित कैसे करें? देखें ( stackoverflow.com/questions/1149929/… )
टॉम ले ने

1
क्या आप कुछ ऐसे उदाहरण दे सकते हैं जिन्हें आप हासिल करने की कोशिश कर रहे हैं?
जॉन ला रोय

8
अजगर में संख्या पहले से ही द्विआधारी है। जब आपका प्रोग्राम शुरू होता है तो वे द्विआधारी में परिवर्तित हो जाते हैं और केवल दशमलव में तब परिवर्तित हो जाते हैं जब आप str () या प्रिंट का उपयोग करते हैं
John La Rooy

जवाबों:


142

आप बिन () और इंट () का उपयोग करके बाइनरी के एक स्ट्रिंग प्रतिनिधित्व के बीच परिवर्तित कर सकते हैं

>>> bin(88)
'0b1011000'
>>> int('0b1011000', 2)
88
>>> 

>>> a=int('01100000', 2)
>>> b=int('00100110', 2)
>>> bin(a & b)
'0b100000'
>>> bin(a | b)
'0b1100110'
>>> bin(a ^ b)
'0b1000110'

धन्यवाद। हां, यह एक होमवर्क असाइनमेंट है। असाइनमेंट में कहा गया है कि प्रदर्शन करते समय मुझे 'बाइनरी फॉर्मेट' में नंबरों को छोड़ना होगा। ऊपर दिया गया आपका उदाहरण बिन से इंट में परिवर्तित होता है। मुझे यकीन नहीं है कि यह स्वीकार्य होगा लेकिन मुझे ऐसा कोई अन्य तरीका नहीं दिखता है जो आपके उदाहरण के अलावा हो सकता है।

7
आप पायथॉन 2.6 और इसके बाद के संस्करण का उपयोग करते समय बाइनरी शाब्दिक का उपयोग भी कर सकते हैं। इसके बजाय int('01100111',2)आप 0b01100111उदाहरण के लिए लिखें , जो है 103
जोशुआ

9

मुझे लगता है कि आप इस बारे में भ्रमित हैं कि बाइनरी क्या है। बाइनरी और दशमलव एक संख्या के अलग-अलग प्रतिनिधित्व हैं - जैसे 101 आधार 2 और 5 आधार 10 एक ही संख्या हैं। परिचालन संख्याओं को जोड़ते, घटाते और तुलना करते हैं - 101 आधार 2 == 5 आधार 10 और इसके अलावा एक ही तार्किक ऑपरेशन है चाहे आप किस आधार पर काम कर रहे हों। यह तथ्य कि आपका अजगर इंटरप्रेटर बाइनरी आंतरिक रूप से बाइनरी के रूप में चीजों को स्टोर कर सकता है। 'यह प्रभावित नहीं करता कि आप इसके साथ कैसे काम करते हैं - यदि आपके पास पूर्णांक प्रकार है, तो बस +, - आदि का उपयोग करें।

यदि आपके पास बाइनरी अंकों के तार हैं, तो आपको अपने स्वयं के कार्यान्वयन को लिखना होगा या उन्हें इंट (बाइनरीस्ट्रिंग, 2) फ़ंक्शन का उपयोग करके परिवर्तित करना होगा।


7

यदि आप बिटकॉइन ऑपरेटरों के बारे में बात कर रहे हैं, तो आप इसके बाद हैं:

~ Not
^ XOR
| Or
& And

अन्यथा, बाइनरी नंबर दशमलव संख्याओं के समान ही काम करते हैं, क्योंकि संख्याएं संख्याएं हैं, चाहे आप उन्हें कैसे भी देखें। दशमलव और बाइनरी के बीच एकमात्र अंतर यह है कि हम उस डेटा का प्रतिनिधित्व कैसे करते हैं जब हम इसे देख रहे होते हैं।


बिटवाइज ऑपरेटरों के साथ ऐड, सब आदि लिखने में हमेशा मजा आता है। इसमें रुचि रखने वाले किसी भी व्यक्ति के लिए, सर्किट पर गाइड की तलाश करें, विशेष रूप से आधे योजक, फिर पूर्ण योजक और फिर अंत में घटाव, शायद एक योजक-घटाव भी। यहां से आप इसे बिटवाइज़ ऑपरेटर्स में ट्रांसलेट कर सकते हैं।
अश्व एसएमथ

3

बाइनरी, दशमलव, हेक्साडेसिमल ... आधार केवल तब ही मायने रखता है जब संख्याओं को पढ़ना या आउटपुट करना, बाइनरी संख्याओं को जोड़ना दशमलव संख्या को जोड़ने के समान है: यह केवल प्रतिनिधित्व का मामला है।


0

नीचे पहले से पोस्ट किए गए फ़ंक्शन का फिर से लिखना है:

def addBinary(a, b): # Example: a = '11' + b =' 100' returns as '111'.    
    for ch in a: assert ch in {'0','1'}, 'bad digit: ' + ch    
    for ch in b: assert ch in {'0','1'}, 'bad digit: ' + ch    
    sumx = int(a, 2) + int(b, 2)    
    return bin(sumx)[2:]

0
'''
I expect the intent behind this assignment was to work in binary string format.
This is absolutely doable.
'''

def compare(bin1, bin2):
    return bin1.lstrip('0') == bin2.lstrip('0')

def add(bin1, bin2):
    result = ''
    blen = max((len(bin1), len(bin2))) + 1
    bin1, bin2 = bin1.zfill(blen), bin2.zfill(blen)
    carry_s = '0'
    for b1, b2 in list(zip(bin1, bin2))[::-1]:
        count = (carry_s, b1, b2).count('1')
        carry_s = '1' if count >= 2 else '0'
        result += '1' if count % 2 else '0'
    return result[::-1]

if __name__ == '__main__':
    print(add('101', '100'))

मैं पाठक के लिए एक व्यायाम के रूप में घटाव दुर्गंध छोड़ता हूं।


-1

यकीन नहीं तो सहायक

class Solution:
    # @param A : string
    # @param B : string
    # @return a strings
    def addBinary(self, A, B):
        num1 = bin(int(A, 2))
        num2 = bin(int(B, 2))
        bin_str = bin(int(num1, 2)+int(num2, 2))
        b_index = bin_str.index('b')
        return bin_str[b_index+1:]

s = Solution()
print(s.addBinary("11", "100"))


-6

मुझे लगता है कि आप इस बारे में भ्रमित हैं कि बाइनरी क्या है। बाइनरी और दशमलव एक संख्या के अलग-अलग प्रतिनिधित्व हैं - जैसे 101 आधार 2 और 5 आधार 10 एक ही संख्या हैं। परिचालन संख्याओं पर जोड़ते, घटाते और तुलना करते हैं - 101 आधार 2 == 5 आधार 10 और इसके अलावा एक ही तार्किक ऑपरेशन है चाहे आप किस आधार पर काम कर रहे हों।


मुझे लगता है कि आप गलत पूछ रहे हैं कि सवाल क्या पूछ रहा था। ओपी बाइनरी प्रतिनिधित्व में संख्याओं को पढ़ने / हेरफेर करने का एक तरीका तलाश रहा था और उन्हें पूर्णांक प्रतिनिधित्व में संख्याओं के साथ इंटरैक्ट करता है।
जोश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.