Wie kann ich in Python Binärzahlen hinzufügen, subtrahieren und vergleichen, ohne sie in Dezimalzahlen umzuwandeln?
Wie kann ich in Python Binärzahlen hinzufügen, subtrahieren und vergleichen, ohne sie in Dezimalzahlen umzuwandeln?
Antworten:
Sie können mit bin () und int () zwischen einer Zeichenfolgendarstellung der Binärdatei konvertieren.
>>> 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'
int('01100111',2)
dir schreibst du 0b01100111
zum Beispiel was ist 103
.
Ich denke, Sie sind verwirrt darüber, was Binär ist. Binär und Dezimal sind nur unterschiedliche Darstellungen einer Zahl - z. B. sind 101 Basis 2 und 5 Basis 10 dieselbe Zahl. Die Operationen Addieren, Subtrahieren und Vergleichen arbeiten mit Zahlen - 101 Basis 2 == 5 Basis 10 und Addition ist dieselbe logische Operation, unabhängig davon, in welcher Basis Sie arbeiten. Die Tatsache, dass Ihr Python-Interpreter Dinge möglicherweise intern als binär speichert, tut dies nicht Es hat keinen Einfluss darauf, wie Sie damit arbeiten. Wenn Sie einen ganzzahligen Typ haben, verwenden Sie einfach +, - usw.
Wenn Sie Zeichenfolgen mit Binärziffern haben, müssen Sie entweder Ihre eigene Implementierung schreiben oder diese mit der Funktion int (binaryString, 2) konvertieren.
Wenn Sie über bitweise Operatoren sprechen, sind Sie auf der Suche nach:
~ Not
^ XOR
| Or
& And
Ansonsten funktionieren Binärzahlen genauso wie Dezimalzahlen, da Zahlen Zahlen sind, unabhängig davon, wie Sie sie betrachten. Der einzige Unterschied zwischen dezimal und binär besteht darin, wie wir diese Daten darstellen, wenn wir sie betrachten.
Binär, Dezimal, Hexadezimal ... die Basis ist nur beim Lesen oder Ausgeben von Zahlen von Bedeutung. Das Hinzufügen von Binärzahlen ist genau das gleiche wie das Hinzufügen von Dezimalzahlen: Es ist nur eine Frage der Darstellung.
Unten finden Sie ein Umschreiben einer zuvor veröffentlichten Funktion:
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:]
'''
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'))
Ich überlasse die Subtraktionsfunktion als Übung für den Leser.
Ich bin mir nicht sicher, ob es hilfreich ist, aber ich lasse meine Lösung hier:
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"))
x = x + 1 Druck (x) a = x + 5 Druck (a)
Ich denke, Sie sind verwirrt darüber, was Binär ist. Binär und Dezimal sind nur unterschiedliche Darstellungen einer Zahl - z. B. sind 101 Basis 2 und 5 Basis 10 dieselbe Zahl. Die Operationen Addieren, Subtrahieren und Vergleichen arbeiten mit Zahlen - 101 Basis 2 == 5 Basis 10 und Addition ist dieselbe logische Operation, unabhängig davon, in welcher Basis Sie arbeiten.