Veuillez consulter cette page à partir de l'interface principale.
version 2011-09-20

SHL : Décalage logique à gauche (multiplication par une puissance de 2)

Les bits du registre source (snd) sont décalés en direction des bits de poids fort. La position du décalage est indiquée par

Les bits de poids faible sont mis à 0.

Dans les exemples suivants, nous considérons que nous effectuons un décalage de deux positions, soit une multiplication par 2^2=4. Pour un YASEP16, le mouvement des bits peut être schématisé ainsi :
Pour YASEP32 c'est identique, mais avec 32 bits au lieu de 16.

Supposons que le registre R1 est chargé avec la valeur 0110110110110110b, soit 28086 en décimal. L'opération de décalage à gauche peut être écrite ainsi 

mov 0110110110110110b r1
shl 2 r1
28086*4=112444, ce qui ne tient pas dans un registre 16 bits (limité à 65535) donc le résultat est tronqué et nous obtenons 112444%65536=46808=1011011011011000b

Le signe du résultat peut changer, si on considère des entiers signés, comme dans le cas de -9363, écrit 1101101101101101b en binaire :

Le dépassement de capacité donne donne 0110110110110100b, ce qui est le nombre positif 28084.