1 Bit Addierer
-
Hi, ich soll einen 1 Bit Addierer in c++ verfassen, habe aber keine Ahnung wie ich die drei Funktionen realisieren soll (AND,XOR,OR) bzw mit welcher Schleife, wäre nett wenn jemand mir den Ansatz verraten könnte, nichts weiter.Meine nicht die c++ Ausdrücke dafür (&, |, ^) ,ich könnte es ja einfach für die 8 Möglichkeite einzeln schreiben, macht aber keinen Sinn.
Danke
-
guckst du erstmal hier: http://de.wikipedia.org/wiki/Halbaddierer
die summe ist ja einfach nur 'a xor b'
und den übertrag haste wenn 'a & b == 1'
-
Danke erstmal für die Hilfe, aber scon bei dieser Ausführung geht es nicht mehr weiter, das Programm verlässt die erste Bedingung nicht mehr.
#include <iostream>
using namespace std;int main ()
{
int c,b,a,s,ue;cout <<"Uebertrag"<<endl;
cin >> c;cout <<"Summand"<<endl;
cin >> b;cout <<"Summand"<<endl;
cin >> a;if ((a || b ||c < 0 ) && (a || b || c > 1))
{
cout <<"Gib nur 1 oder 0 ein";
}else((a || b ||c = 0 ) && (a || b || c = 1))
{
ue=((b & a & !c) | (!b & a & c) | (b & !a & c) | (b & a & c )) ;
}
cout << ue;
}
-
probier mal dies:
typedef struct __adder { unsigned in1 :1; unsigned in2 :1; unsigned sum :1; unsigned carry :1; } adder_t; adder_t adder (adder_t a) { a.sum = a.in1 ^ a.in2; a.carry = a.in1 & a.in2; return a; }anwenden kannstes dann so:
... adder_t input; adder_t result; input.in1 = 0; // 0 oder 1 input.in2 = 1; // 0 oder 1 result = adder (input); ...in result.sum und result.carry steht dann das ergebnis...
-
Habe einfach zu abstrakt gedacht die Lösung war ganz einfach, diese nämlich, danke dir trotzdem . Werde sicherlich öfters noch hilfe brauchen. Danke
#include <iostream>
using namespace std;int main ()
{
int c,b,a,s,ue;cout <<"Uebertrag"<<endl;
cin >> c;cout <<"Summand"<<endl;
cin >> b;cout <<"Summand"<<endl;
cin >> a;s=(a ^ b) ^ (c);
cout << "Die Summe ist :" << s<< endl;ue=((a | b) & c) | (a & b) ;
cout << "Der Uebertrag ist:" << ue;
}
-
wärs nicht vllt. sogar besser bool Variablen zu nehmen? Dann kommen auch keine Ergebnisse wie 2 raus. Oder wird das durch das :1 hinter den unsigned variablen ausgedrückt?
PS: Coole Band. Machen Live ordentlich Lärm

-
Xul schrieb:
wärs nicht vllt. sogar besser bool Variablen zu nehmen? Dann kommen auch keine Ergebnisse wie 2 raus. Oder wird das durch das :1 hinter den unsigned variablen ausgedrückt?
dieses ':irgendwas' legt fest, wieviele bits benutzt werden sollen für die membervariable. aber klar, mit 'bool' geht's natürlich auch...