16Bit Multiplikation

Gast #210977
Lesenswert?

Hallo..
Ich möchte gern eine 16Bit Zahl mit 2 multiplizieren. Bei 8Bit ist dies
ja  mit einem Linksshift erledigt aber bei 16Bit will es nicht
funktionieren. Habe versucht erst das Register mit den 8 niederen Bits
nach links zu schieben. Vorher hatte ich das Carry Bit gelöscht und
nach dem linksshift das Carry gelesen. Wenn ein überlauf stattgefunden
dann habe ich das Register mit den 8 höherwertigen Bits incrementiert
und danach ebenfalls einen linksshift ausgeführt. Leider kommt als
Ergebnis nur quatsch raus.. ist es überhaupt möglich bei 16Bit werten
mit dieses einfache verfahren anzuwenden ?
Ach ja.. Ich sollte noch dazu sagen, das ich den Wertebereich nicht
voll ausnutze und es zu keinem Überlauf kommen kann. Die werte die mit
2 multiplizieren will liegen im bereich von 0 - 2000.
Gast #210978
Lesenswert?

AFAIK solltest du die höheren 8Bit erst shiften und dann inkrementieren,
auch wenn es dafür sicher einen Spezial Assembler-Befehl (rotate w/
carry) gibt. Ich progge fast nur C, also bin ich da überfragt, aber
andere Architekturen haben sowas auch.

- cl
Gast #210982
Lesenswert?

Na klar add kann ich ja auch benutzen...hätt ich ja auch selbst drauf
kommen müssen...Also danke an alle...
Aber eine Frage hätte ich da noch und zwar zu der Antwort von Hartmut.
Er schreibt das man zuerst das lowregister linksschieben soll und
danach das highregister nach rechts.. Warum nach rechts???

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren