it-swarm.com.de

Binärzahlen in Python

Wie kann ich binäre Zahlen in Python hinzufügen, subtrahieren und vergleichen, ohne in Dezimalzahlen zu konvertieren?

54
EkSwaim

Sie können mit bin () und int () zwischen einer String-Darstellung 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'
100
John La Rooy

Ich denke, Sie sind verwirrt darüber, was binär ist. Binär und Dezimal sind nur unterschiedliche Darstellungen einer Zahl - z. 101 Basis 2 und 5 Basis 10 haben die gleiche Anzahl. Die Operationen addieren, subtrahieren und vergleichen Operationen mit Zahlen - 101 base 2 == 5 base 10 und die Addition ist die gleiche logische Operation, unabhängig von der Basis, in der Sie arbeiten Sie beeinflussen nicht, wie Sie damit arbeiten. Wenn Sie einen Integer-Typ haben, verwenden Sie einfach +, - usw.

Wenn Sie Binärzeichenfolgen haben, müssen Sie entweder Ihre eigene Implementierung schreiben oder sie mit der Funktion int (binaryString, 2) konvertieren.

9

Wenn Sie von bitweisen Operatoren sprechen, dann haben Sie folgende Ziele:

~ Not
^ XOR
| Or
& And

Ansonsten funktionieren Binärzahlen genauso wie Dezimalzahlen, da Zahlen Zahlen sind, egal wie Sie sie betrachten. Der einzige Unterschied zwischen Dezimal und Binär ist, wie wir diese Daten darstellen, wenn wir sie betrachten.

7
Smashery

Binär, dezimal, hexadezimal ... Die Basis ist nur beim Lesen oder Ausgeben von Zahlen von Bedeutung. Das Hinzufügen von Binärzahlen ist genauso wie das Hinzufügen von Dezimalzahlen: Es ist nur eine Frage der Darstellung.

3
Pierre Bourdon

Nachfolgend finden Sie eine Umschreibung 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:]
0
mastueben