Shift-Befehle in Assembler

levitin
Kernelcompilierer
Kernelcompilierer
Beiträge: 435
Registriert: 7. Okt 2007 15:36
Wohnort: Darmstadt

Shift-Befehle in Assembler

Beitrag von levitin »

allererstens möchte ich klären, ob folgendes richtig ist:

1) mit Shift-Befehlen können die Zahlen multipliziert, bzw dividiert werden, wenn der zweite Operand ein Potenz von 2 ist.
Wenn ich also z.B. 10 x 3 multiplizieren möchte [ Es existiert kein log2(3) in N ] muss ich wohl den mul-Befehl verwenden

2) Woran besteht der Unterschied zwischen den Befehlen
Shift-Right-Logical: srl und Shift-Right-Arithmetic: sra

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Shift-Befehle in Assembler

Beitrag von Krümelmonster »

levitin hat geschrieben:allererstens möchte ich klären, ob folgendes richtig ist:

1) mit Shift-Befehlen können die Zahlen multipliziert, bzw dividiert werden, wenn der zweite Operand ein Potenz von 2 ist.
Wenn ich also z.B. 10 x 3 multiplizieren möchte [ Es existiert kein log2(3) in N ] muss ich wohl den mul-Befehl verwenden
Richtig.
levitin hat geschrieben:2) Woran besteht der Unterschied zwischen den Befehlen
Shift-Right-Logical: srl und Shift-Right-Arithmetic: sra
srl schiebt einfach die Bits nach rechts (die Bits ganz rechts gehen dabei verloren).
sra schiebt auch nach rechts, zieht aber dabei von links das Vorzeichen nach.
Damit können mit sra auch negative Zahlen multipliziert und dividiert werden, wie
du es oben beschrieben hast.

Beispiel mit acht Bit:
Die Zahl -4 ist in 2k-Darstellung: 11111100
Nach einem srl ist das Ergebnis: 01111110
Nach einem sra ist das Ergebnis: 11111110
11111110 ist die 2K Darstellung von -2.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Antworten

Zurück zu „Archiv“