Bitweise Operatoren für eine grundlegende Einführung in Python

Bitweise Operatoren wandeln Zahlen in Binärform um und führen dann Berechnungen durch.

Zum Beispiel: a = 60, b = 13,

a & b = 12, das liegt daran, dass a und b in binäre as umgewandelt werden

a = 0011 1100,

b = 0000 1101,

a & b = 0000 1100 = 12,

Zu den Bitoperatoren gehören:

Bitoperatoren Bedeutung

Beispiel: a = 60 = 0011 1100,

           b = 13 = 0000 1101

& UND: Zwei an der Operation beteiligte Werte. Wenn beide entsprechenden Bits 1 sind, ist das Ergebnis des Bits 1, andernfalls ist es 0 a & b = 0000 1100 = 12
| Oder: Zwei an der Operation beteiligte Werte. Wenn eines der beiden entsprechenden Bits 1 ist, ist das Ergebnis dieses Bits 1, andernfalls ist es 0. ein | b = 0011 1101 = 61
^ XOR: Zwei an der Operation beteiligte Werte. Wenn die beiden entsprechenden Bits inkonsistent sind, ist das Ergebnis des Bits 1, andernfalls ist es 0 a ^ b = 0011 0001 = 49
~ Negation: Negieren Sie jedes Bit des an der Operation beteiligten Werts, dh 1 wird zu 0, 0 wird zu 1, ~x entspricht -x-1 ~a = 1100 0011 = -61, das Komplement des vorzeichenbehafteten Bits (die binäre Darstellung negativer Zahlen wird später erklärt)
<< Linksverschiebung: Verschieben Sie jedes Bit des an der Operation beteiligten Werts um eine Anzahl von Bits nach links. Die Zahl rechts von „<<“ gibt die Anzahl der zu verschiebenden Bits an. Die hohen Bits werden verworfen, die niedrigen Bits gefüllt mit 0. a << 2 = 1111 0000 = 240
>> Rechtsverschiebung: Verschieben Sie jedes Bit des an der Operation beteiligten Werts um eine Anzahl von Bits nach rechts. Die Zahl rechts von „<<“ gibt die Anzahl der zu verschiebenden Bits an. Die niedrigen Bits werden verworfen, die hohen Bits gefüllt mit 0. a >> 2 = 0000 1111 = 15

Nachdem Sie nun die Bedeutung bitweiser Operatoren verstanden haben, beginnen wir mit den Übungen.

Beispiel 1: Geben Sie zwei nicht leere Binärzeichenfolgen ein, die nur 0 und 1 enthalten, und geben Sie die Summe der beiden Zahlen zurück (1. Drücken Sie das Ergebnis binär aus; 2. Die Eingabewerte sind alle nicht „0“, außer „ 0'. Start-Binärdatei)

Analyse: Wir können einen solchen Algorithmus entwerfen, um Folgendes zu berechnen:

Wandeln Sie a und b in Ganzzahlen c und d um. Im folgenden Prozess speichert c das Ergebnis und d speichert das Übertragsbit.

Wenn das Übertragsbit nicht 0 ist:

1. Berechnen Sie das übertragsfreie Additionsergebnis der aktuellen c und d: Ergebnis = c ^ d;

2. Berechnen Sie den Übertrag des Stroms c und d: jin = (c & d) << 1;

3. Schließen Sie diesen Zyklus ab und aktualisieren Sie c = result, d = jin;

Wenn das Übertragsbit 0 ist, wird die binäre Form von c zurückgegeben;

Warum ist diese Methode machbar? In der ersten Berechnungsrunde ist die letzte Ziffer des Ergebnisses das Ergebnis nach der Addition von c und d, und die vorletzte Ziffer von jin ist der Übertrag der Addition der letzten Ziffern von c und d. Da Jin in jeder folgenden Runde durch „bitweises UND“ und „Linksverschiebung“ von c und d erhalten wird, werden am Ende Nullen hinzugefügt, sodass die folgenden Ziffern im folgenden Berechnungsprozess und in jeder Runde nicht betroffen sind Sie kann eine Antwort mit dem Low-i-Bit und seinem Übertrag auf das Low-i+1-Bit erhalten, was auch den Additionsprozess simuliert.

Code wie folgt anzeigen:

def addBinary(self, a: str, b: str) -> str:
        c = int(a, 2)
        d = int(b, 2)
        while d:
            result = c ^ d
            jin = (c & d) << 1
            c = result
            d = jin
        return bin(c)[2:] # bin() 返回一个整数 int 或者长整数 long int 的二进制表示。

Das Obige ist eine kurze Einführung in Bitoperatoren. Später werde ich die Darstellung binärer negativer Zahlen aufzeichnen und zeigen, wie man sie besser versteht. Vielen Dank.

Bitte geben Sie beim Nachdruck die Quelle an, vielen Dank!

Ich denke du magst

Origin blog.csdn.net/hbblzjy/article/details/121802791
Empfohlen
Rangfolge