C++

Neue Frage »

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
 
Auf diesen Beitrag antworten »
ex

Diese Zahl soll ich dabei ausrechnen:

0101*10111
Auf diesen Beitrag antworten »
eulerscheZahl

Erst mal überlegen, wie die Multiplikation mit Stift und Papier funktioniert:
code:
1:
2:
3:
4:
5:
6:
7:
8:
0101*10111
  0101
   0000
    0101
     0101
+     0101
----------
  01110011

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?
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?
 
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
...
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.
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.
 
Neue Frage »
Antworten »


Verwandte Themen