Opérations sur les bits – Opérations arithmétiques

Pouvez-vous s’il vous plaît expliquer les lignes ci-dessous, avec quelques bons exemples.

Un décalage arithmétique gauche de n équivaut à une multiplication par 2 n (à condition que la valeur ne déborde pas).

Et:

Un décalage arithmétique droit par n d’une valeur de complément à deux équivaut à une division par 2 n et à un arrondi à l’infini négatif. Si le nombre binary est traité comme un complément à 1, la même opération de décalage à droite entraîne une division par 2 n et un arrondi à zéro.

Je vais expliquer ce qui se passe dans une base que nous connaissons mieux: 10.

En base 10, disons que vous avez un nombre N = 123. Maintenant, vous “déplacez” ce nombre vers la gauche k = 3 positions, en remplissant les chiffres vides avec 0. Vous obtenez donc X = 123000.

Notez que X = N * 10 k .

Le cas avec la base 2 est analogue.

Example 1 (base 10) | Example 2 (base 2) | N = 123 | N = 110101 (53 in base 10) k = 3 | k = 2 (in base 10) N << k = 123000 | N << k = 11010100 (212 in base 10) | 10^k = 1000 | 2^k = 100 (in base 2; 4 in base 10) N * 10^k = 123000 | N * 2^k = 11010100 (53 * 4 = 212 in base 10) | 

Le cas avec décalage droit est simplement un miroir du processus, et est également analogue en base 10. Par exemple, si j'ai 123456 en base 10 et que je "décale" 3 positions à droite, j'obtiens 123. C'est 123456/1000 (division entière), où 1000 = 10 3 .

Il est facile de créer vos propres exemples.

Considérons cinq qui est 101 en binary. Gauche le déplacer une fois et vous obtenez 1010 qui est binary pour dix. Faites-le encore et vous obtenez 10100 qui est vingt et ainsi de suite ..