C++ |
09.05.2013, 12:13 | Auf diesen Beitrag antworten » | |||||
ex | C++ Meine Frage: Hallo leute ich habe gerade probleme bei einer Aufgabe: Ich habe leider noch keine Ansätze. Implementieren sie einen Code Ausschnitt mit einfacher EIn und Ausgabe mit dem sie die Multiplikation zweier Dualzahlen durchführen können, wenn ihr Prozessor nur addieren und schieben kann , nicht aber multiplizieren. Für tipps wäre ich dankbar. Meine Ideen: keine |
|||||
|
||||||
09.05.2013, 12:15 | Auf diesen Beitrag antworten » | |||||
ex | Diese Zahl soll ich dabei ausrechnen: 0101*10111 |
|||||
09.05.2013, 13:36 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Erst mal überlegen, wie die Multiplikation mit Stift und Papier funktioniert:
Die einzige Multiplikation die bleibt, ist die mit der 1 und 0, bei beiden kann mal das Ergebnis sagen, ohne rechnen zu müssen. Erkennst du ein Muster? |
|||||
09.05.2013, 14:30 | Auf diesen Beitrag antworten » | |||||
C++ | 1*1 = 1 und 1*0 = 0 Wenn ich das im code schreiben soll mit addition ,soll ich einfach die if beding so schreiben ? In worten irgendie so: Wenn zwei gleiche Zahlen addiert werden , soll sich die Zahl nicht ändern , bei unterschiedlich zahlen schon? Wäre die denkweise irgendwie richtig? |
|||||
Anzeige | ||||||
|
||||||
09.05.2013, 14:39 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Die erste Zahl (0101) bleibt als ganzes. Die zweite wird bitweise untersucht: das Ergebnis (zu Beginn=0) immer um eins shiften wenn die zweite Zahl am betrachteten Bit eine 1 hat, 0101 auf das Ergebnis addieren. Also erg=00000000 erg shiften -> bleibt 00000000 erstes Bit der 2. Zahl betrachten ist eine 1, also erg+=0101, somit erg= 00000101 shiften -> erg=00001010 zweites Bit der zweiten Zahl ist 0, also nicht addieren shiften addieren da 1 ... |
|||||
09.05.2013, 14:45 | Auf diesen Beitrag antworten » | |||||
ex | #include <iostream> using namespace std; int main() { int a = 0101; int b = 10111; int summe; int i = 0; for(int i = 0; i > 0; i++){ } } Ich bin ganz ehrlich ,ich habe probleme deine idee zu verstehen. Ich habe mal mein code soweit gepostet . JEtzt wollte ich irgendwie eine if bedingung erstellen in der for schleife , habe aber keine idee wie. |
|||||
09.05.2013, 14:57 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | So kannst du a und b aber nicht eingeben, das sind ja Binärzahlen, der Compiler interprtiert sie aber dezimal. Nochmal zurück zur Multilpikation mit Stift und Papier: Ich habe das mal so gelernt, dass man die 2. Zahl (10111) Ziffer für Ziffer durchgeht, mit der ersten Zahl "multipliziert" (binär heißt das, die 1. Zahl abzuschreiben, oder eine 0 hinzuschreiben) und das Ergebnis dann unter die entsprechende Ziffer der 2. Zahl schreibt. Genau diesen Algorithmus würde ich in Code fassen. |
|