Dualzahlen "schriftlich" multiplizieren
-
Hallo,
Ich habe hier eine Aufgabe, in der es darum geht, 2 Dualzahlen "schriftlich" zu multiplizieren.
Hier die Aufgabe:http://i47.tinypic.com/szfpg6.png
Wie genau mache ich das am besten?
Mir ist klar, dass das ganze auf Bitverschiebung hinausläuft.
Mein 1. Problem wäre, wie ich die Zahlen dort bei der "Addition" immer um 1 nach rechts verschoben hinbekomme....Dann am Ende noch "addieren"....Wie mach ich das?
-
Keine Ahnung wie effizient mein Vorschlag ist.
Denkbar wäre:
Angenommen du willst mit 5 mutliplizieren:int zahl = 28; int counter = 0; int shift = 5; while (shift >= 2) { shift -= 2; counter++; } zahl << counter; zahl += shift; // shift enthält bei ungeraden Zahl den Rest, den man addiert.
Code nicht getestet...
-
Fürs Verschieben gibt's die Bitshift-Operatoren << und >>. Fürs Addieren gibt es den Additionsoperator +.
Ansonsten willst du im Zweifel nicht die unteren Zahlen nach rechts verschoben kriegen sondern die oberen nach links. Das sieht in dem Diagramm nur dumm aus - die oberste 1011 wird dort im Eregebnis zu 101100.