Qu'est-ce qu'un décalage arithmétique?
Un décalage arithmétique est un moyen de multiplier ou de diviser des nombres. Les décalages arithmétiques sont généralement exécutés sur des nombres binaires. Le concept est toutefois applicable à n’importe quel schéma de numérotation.
Voici un exemple utilisant des nombres décimaux ayant dix comme base. Lorsque 250 est décalé arithmétiquement à gauche, le nombre obtenu est 2500, soit 250 multiplié par dix. Lorsque 250 est représenté par 4 chiffres correspondant à 0250, le décalage est arithmétique à droite et correspond à 0025, soit 250 divisé par dix. Il est donc plus correct de dire qu'un décalage arithmétique est un moyen de multiplier ou de diviser des nombres par la base du schéma de nombres.
Les nombres binaires ont 2 comme base; ils sont représentés par des 0 et des 1 et peuvent être signés ou non. Dans un décalage arithmétique à gauche, les nombres sont décalés d'un espace vers la gauche, zéro étant placé à droite. Dans un décalage arithmétique à droite, les nombres sont décalés d'un espace vers la droite, le nombre le plus à gauche étant conservé à gauche. En général, un décalage peut être pour "n" espaces.
Dans les nombres binaires non signés, chaque position correspond à une puissance de 2; ainsi, 1 binaire est le nombre décimal 1, le nombre binaire 10 est le nombre décimal 2, le nombre binaire 100 est le nombre décimal 4, et ainsi de suite. Donc, 0110 est le nombre décimal 6. Lorsqu'un décalage arithmétique à gauche est effectué, le nombre obtenu est 1100, qui est un nombre décimal 12. Lorsqu'un décalage arithmétique à droite est effectué, le nombre résultant est un nombre 0011 qui est le nombre décimal 3.
Les nombres pouvant être à la fois positifs et négatifs, des nombres binaires signés sont utilisés, le bit le plus à gauche étant 0 pour un nombre positif ou zéro et 1 pour un nombre négatif. Ainsi, pour les nombres à 4 bits, 0111, qui correspond à la virgule 7, est le plus grand nombre positif. Le schéma le plus souvent utilisé pour les nombres négatifs a 1111 comme décimal -1 et cela va jusqu'à 1000, qui est décimal -8.
Un décalage arithmétique à gauche sur 1101, par exemple, qui est décimal -3, donne 1010, qui est décimal -6. Un décalage arithmétique à droite sur 1010, qui est décimal -6, donne 1101, qui est décimal -3. Notez que le bit le plus à gauche est conservé.
Un décalage arithmétique ne correspond pas toujours à la multiplication et à la division de chaque nombre dans le schéma de nombres. Il existe des limitations aux deux extrémités du schéma de numéros. Par exemple, le décalage gauche de 0111, le nombre décimal 7, donne le nombre décimal -2 et le décalage droit de 1111, le nombre décimal -1, le nombre décimal -1.
Un décalage arithmétique a une simplicité inhérente et un décalage est beaucoup plus rapide à effectuer que la multiplication et la division normales. Les ordinateurs prennent donc en charge cette opération en utilisant un mécanisme relativement simple appelé unité à décalage ou registre à décalage. Les programmeurs avertis utilisent cette opération tant que les limitations mentionnées ci-dessus sont soit évitées, soit résolues.