Ja, aber ich bin der Meinung, da wird was verwechselt.
s<<1; verschiebt Variable#S um 1 Bit nach links.
Bei Multiplikation (s=s*2)passiert was anderes. Ich denke in etwa so:
Code:
mov ax,var_s
mov bx,2
mul bx
mov var_s,ax
oder so:
mov ax,var_s
mul 2
mov var_s,ax
oder so, falls es möglich wäre:
mul var_s,2
Vom Prinzip her kommt es drauf an, was der Compiler für Maschinencode erzeugt.
Mit S=S<<1 machst Du in etwa so etwas:
Code:
mov ax,var_s
shl ax,1
mov var_s,ax
Das meine ich, ergibt keinen Sinn. Unnötige Operationen einzufügen. Wenn dann optimiert man einen Code, damit er schneller abgearbeitet wird. Und nicht, damit eine Befehlssequenz, die schneller ist, genau so schnell wird, wie eine andere, die langsamer ist.
Wichtig wäre zu wissen, ob s<<1 zum selben Ergebnis führt, wie s=s*2.
Lesezeichen