Hinzufügen von Binärzahlen in C ++

8

Wie würde ich zwei Binärzahlen in C ++ hinzufügen? Was ist die richtige Logik?

Hier ist meine Anstrengung, aber es scheint nicht richtig zu sein:

%Vor%     
Muhammad Arslan Jamshaid 08.11.2012, 05:12
quelle

12 Antworten

21

Nun, es ist ein ziemlich triviales Problem.

  

Wie füge ich zwei Binärzahlen in C ++ hinzu? Was ist die Logik davon?

Zum Hinzufügen von zwei Binärzahlen a und b. Dazu können Sie die folgenden Gleichungen verwenden.

  

Summe = a xor b

     

carry = ab

Dies ist die Gleichung für einen Halben Addierer .

Um dies zu implementieren, müssen Sie möglicherweise verstehen, wie ein Volladdierer funktioniert.

  

Summe = a xor b xor c

     

carry = ab + bc + ca

Da Sie Ihre Binärzahlen im int-Array speichern, sollten Sie den bitweisen Betrieb verstehen. Sie können ^ für XOR, | verwenden Operator für OR, & amp; Operator für UND.

Hier ist ein Beispielcode, um die Summe zu berechnen.

%Vor%     
krammer 08.11.2012, 05:38
quelle
4

Da Sie nach C ++ gefragt haben, verdienen Sie eine C ++ Antwort. Verwenden Sie Bitsets :

%Vor%

Dies funktioniert für beliebig lange Bit-Sets.

    
bitmask 08.11.2012 06:08
quelle
2

Es gibt einen Fehler:

%Vor%

Vielleicht möchten Sie auch umgekehrt drucken

%Vor%     
Karthik T 08.11.2012 05:15
quelle
1

Sie können die Operation "Bitwise OR" verwenden, um den Code seit

zu reduzieren %Vor%

Sie können auch beide Zahlen in dezimale Summe umwandeln und sie gehen wieder zurück in die Binärdatei.

Konvertieren von Dezimal zu Binär

%Vor%     
dreamcrash 08.11.2012 05:35
quelle
1

Ihre Arrays sind ein Element, das zu klein für Ihre Indizierung ist.

int a[3] hat nur 3 Elemente, also ist a[3] = 1 ungültig (es hat undefiniertes Verhalten ), da es auf das vierte Element zugreift, das nicht existiert.
Ebenso für die anderen Arrays.

Das bedeutet, dass das gesamte Programm undefiniertes Verhalten hat, d. h. es kann alles oder nichts tun.

(Was in Ihrem Fall wahrscheinlich passiert, ist, dass das Schreiben außerhalb der Arrays die anderen Variablen überschreibt.)

Sie initialisieren auch nicht das result -Array, also sind es nur zufällige Daten Da Sie nur 4 seiner Elemente aktualisieren, aber alle (und mehr) drucken, werden auch zufällige Daten ausgegeben.

    
molbdnilo 08.11.2012 06:45
quelle
1

Im Folgenden finden Sie die Fehler in Ihrem Code und der festgelegte Code ist ebenfalls unter "

  1. int a [] hatte die Größe 3 und kann daher nicht im 3. Index gespeichert werden. Benutze int a [4].
  2. wenn (a [i] + b [i] + carry == 1) falsche Werte in diesem Prüfupdate-Ergebnis [i] = 1 zugewiesen wurden; Übertrag = 0.
  3. Die Reihenfolge der Prüfungen ist umgekehrt.
  4. Der letzte Übertrag wurde nicht im Ergebnis gespeichert.
  5. Das Additionsergebnis, das im Ergebnis-Array gespeichert wurde, war in umgekehrter Reihenfolge, also wurde es umgekehrt gedruckt.

Hier ist das funktionierende Stück Code:

%Vor%     
Aadil Imran 08.11.2012 07:12
quelle
1
%Vor%     
Manglesh Pareek 21.10.2013 19:51
quelle
0

Wiederhole das

%Vor%

bis x 0 ist. y ist die Antwort.

    
user515430 08.11.2012 05:53
quelle
0

Sie sollten dies tun

%Vor%     
bingchuan zhang 21.09.2015 07:45
quelle
0

Eine nicht-konventionelle Lösung, aber es funktioniert:

%Vor%     
fedemengo 06.12.2015 23:04
quelle
0

Was ist, wenn ihre Größen nicht gleich sind? Außerdem sollten Sie zulassen, dass der Benutzer die Binärzahlen (in diesem Fall ganze Zahlen) als Ganzzahlen und nicht als Elemente von Arrays eingibt. Hier ist ein Stück Code, der diese erreicht: -)

%Vor%     
Mattlab 22.05.2016 10:18
quelle
0

Ein einfacher Weg:

%Vor%     
rashedcs 09.03.2018 10:11
quelle

Tags und Links