Hinzufügen von Binär-zahlen in C++
Wie sollte ich hinzufügen, zwei binäre zahlen in C++? Was ist die richtige Logik?
Hier ist mein Versuch, aber es scheint nicht korrekt zu sein:
#include <iostream>
using namespace std;
int main()
{
int a[3];
int b[3];
int carry = 0;
int result[7];
a[0] = 1;
a[1] = 0;
a[2] = 0;
a[3] = 1;
b[0] = 1;
b[1] = 1;
b[2] = 1;
b[3] = 1;
for(int i = 0; i <= 3; i++)
{
if(a[i] + b[i] + carry == 0)
{
result[i] = 0;
carry = 0;
}
if(a[i] + b[i] + carry == 1)
{
result[i] = 0;
carry = 0;
}
if(a[i] + b[i] + carry == 2)
{
result[i] = 0;
carry = 1;
}
if(a[i] + b[i] + carry > 2)
{
result[i] = 1;
carry = 1;
}
}
for(int j = 0; j <= 7; j++)
{
cout<<result[j]<<" ";
}
system("pause");
}
- die Hölle :p habe ich nicht bekommen
- Ich nehme an, Sie Leben nicht in einem Englisch sprechenden Land. Es ist ein idiom: thefreedictionary.com/for+die+Hölle+der+es
- wo ist es immer falsch für Sie ?
- dankbar für Ihre Mühe, aber ich bin hier, um meine bits starke Idiome nicht :p für die Hölle der es 🙂
- "Es scheint nicht richtig" nicht viel helfen, ohne eine Beschreibung, was für ein Ergebnis Sie erwarten und was Sie tatsächlich bekommen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, es ist ein ziemlich triviales problem.
Für das addieren von zwei Binärzahlen a und b. Sie können mithilfe der folgenden Gleichungen zu tun.
Dies ist die Gleichung für eine Halb-Addierer.
Nun um dies zu implementieren, müssen Sie möglicherweise zu verstehen, wie ein Full-Adder funktioniert.
Seit Sie speichern Ihre binären zahlen in int-array, möchten Sie vielleicht, um zu verstehen,bitweise operation.
Sie können verwenden ^ für XOR,| " - operator für ODER, & - operator für die UND.
Hier ist ein Beispiel-code zur Berechnung der Summe.
Da Sie gefragt wurden C++, verdienen Sie ein C++ - Antwort. Verwenden bitsets:
Dies funktioniert für beliebig lange bit-Sätze.
m
ist eine Maske zu extrahieren, das lsb von einem bitset. Zum Beispiel("uvwxyz" >> 2)&"1"
->"x"
.Gibt es einen bug :
Auch u vielleicht möchten Sie drucken in umgekehrter
Könnten Sie "Bitweise ODER" der Vorgang zum reduzieren der code da
Könnte man auch konvertieren sowohl Zahl als Dezimalzahl Summe und Sie gehen zurück, um binäre wieder.
Konvertieren von dezimal zu Binär
Ihre arrays sind ein Element zu klein für die Indizierung.
int a[3]
hat nur 3 Elemente, soa[3] = 1
ungültig ist (es hat Undefiniertes Verhalten), da es den Zugriff auf das 4. element, das nicht vorhanden ist.Ebenso für die anderen arrays.
Das bedeutet, dass das ganze Programm hat Undefiniertes Verhalten, d.h. er kann alles tun oder gar nichts.
(Was wahrscheinlich passiert in Ihrem Fall ist, dass das schreiben außerhalb des arrays überschreiben von anderen Variablen.)
Du bist auch nicht Initialisierung des
result
array, so dass Ihr Inhalt ist nur einige zufällige Daten.Da Sie nur update 4 seiner Elemente, sondern drucken Sie alle (und mehr), die Ausgabe wird werden zufällige Daten als gut.
Folgenden waren die Fehler in Ihrem code und fixed-code ist auch unter"
hier ist der funktionierende code:
Wiederholt tun
bis x ist 0. y ist die Antwort.
sollten Sie dies tun
Nicht-konventionelle Lösung, aber es funktioniert:
Was ist, wenn Ihre Größen sind nicht das gleiche? Außerdem würden Sie zulassen möchten, dass die Benutzer zur Eingabe der binären zahlen (in diesem Fall repräsentiert Integer) als Integer und nicht als Elemente des arrays. Hier ist ein Stück code, welches diese 🙂
Einen einfachen Weg :