Ich hab eine Aufgabe erhalten und sitze daran schon eine ganze weile:
Aufgabe 3: 4-Bit-Volladdierer Schreiben Sie ein C-Programm, das die Funktionalität eines 4-Bit-Volladdierers simuliert. Ein Nutzer gibt zwei Zahlen a und b ein, die jeweils im Bereich von 0 bis 15 liegen müssen. Liegt eine Zahl außerhalb dieses Bereichs, bricht das Programm mit einer Fehlermeldung ab. Die beiden Zahlen werden binär addiert, wobei für jede Stelle der verwendete Übertrag angezeigt werden muss. Das Ergebnis darf mit 5 Bit ausgegeben werden. Eine Beispielausgabe des Programms kann z.B. wie folgt aussehen:
Enter first number from 0 to 15: 7
Enter second number from 0 to 15: 12
00111 (x)
+ 01100 (y)
c 11000 (Übertrag)
-------------------
10011 (x + y)
Hinweis: Bei dieser Aufgabe bietet es sich an, mit binären Operatoren zu arbeiten.
Mein Programm dafür war erstmal wie folgt. Dabei Handelt es sich um die Programmiersprache C :
Ich hab es auch schon mit Bitweise Operatoren versucht komme aber nicht weiter.
Mir wurde gesagt, man könne mit >> und << Operatoren diese Aufgabe lösen
#include <stdio.h>
// Funktion zur Ausgabe der Binärdarstellung einer Zahl
void printBinary(int num, int bits) {
for (int i = bits - 1; i >= 0; i--) {
printf("%d", (num >> i) & 1);
}
}
int main() {
// Benutzereingabe für die beiden 4-Bit-Zahlen
int a, b;
printf("\n");
printf("\n");
// Eingabe für die erste Zahl
printf(" Tippe deine erste Zahl zwischen 0 und 15 ein: ");
scanf("%d", &a);
// Überprüfung der Gültigkeit der Eingabe
if (a < 0 || a > 15) {
printf("Error: Zahl liegt nicht zwischen 0 und 15\n");
printf(" Programm beendet...\n");
return 1; // Programm mit Fehlercode beenden
}
// Eingabe für die zweite Zahl
printf("Tippe deine zweite Zahl zwischen 0 und 15 ein ");
scanf("%d", &b);
// Überprüfung der Gültigkeit der Eingabe
if (b < 0 || b > 15) {
printf("Error: Zahl liegt nicht zwischen 0 und 15\n");
printf(" Programm beendet...\n");
return 1; // Programm mit Fehlercode beenden
}
printf("\n");
// Berechnung des 4-Bit-Volladdierers
int summe = a + b;
int uebertrag = (a & b) << 1;
// Ausgabe des Ergebnisses im binären Format
printf(" ");
printBinary(a, 5);
printf(" (x)\n");
printf("+ ");
printBinary(b, 5);
printf(" (y)\n");
printf("U ");
printBinary(uebertrag, 5);
printf(" (Uebertrag)\n");
printf("-------------------\n");
printf("+ ");
printBinary(summe, 5);
printf(" (x + y)\n");
return 0; // Programm erfolgreich beenden
}