K & R – Comprendre l’exercice 2-8: Qu’est-ce qui est demandé ici exactement?

Je travaille sur les exercices du livre K & R. Actuellement, je suis coincé à l’exercice 2-8, qui dit ce qui suit:

Write a function rightrot(x, n) that returns the value of the integer x rotated to the right by n bit positions.

Le problème que j’ai, c’est que je n’arrive pas à imaginer à quoi le résultat DEVRAIT ressembler.

Comment ou qu’est-ce que je tourne? Est-ce que je prends le bit le plus à gauche et le mets à la position la plus à droite de x , après que x est décalé vers la gauche et le répète pour n bits? Ou est-ce que je prends un morceau ( n bits) et le mets à droite tout en laissant le rest des bits les plus à droite inchangé?

Toute réponse utile est appréciée. Merci.

Rotation signifie que vous vous déplacez essentiellement vers la gauche ou la droite, mais les bits autrement “perdus” réapparaîtront de l’autre côté.

C’est beaucoup plus facile à expliquer avec un nombre décimal:

Tourner 123456789 à droite de 3 chiffres donnera 789123456 . Tourner 123456789 à gauche de 4 chiffres donnera 567891234 .

Donc, vous allez prendre essentiellement n bits d’un côté et les attacher aux autres. Il est beaucoup plus facile de comprendre si vous pensez à tous les chiffres assis sur un cercle ou une roue que vous faites pivoter autour du centre.

Pour éviter toute confusion, il suffit de remplacer “rotation” par “déplacer” ou “shift” et n’oubliez pas de sauvegarder les bits autrement perdus.

Bonne idée mais dans l’autre sens.

Obtenez le bit le plus à droite. Décale à droite. Définissez le bit le plus à gauche. Faites-le n fois.