Je sais que ce qui suit est vraiExiste-t-il un moyen d'effectuer un décalage de bits circulaire en C#?
int i = 17; //binary 10001
int j = i << 1; //decimal 34, binary 100010
Mais, si vous passez trop loin, les bits tombent à la fin. Où cela se produit est une question de la taille de l'entier avec lequel vous travaillez.
Existe-t-il un moyen d'effectuer un décalage de sorte que les bits tournent de l'autre côté? Je cherche une seule opération, pas une boucle for.
Où une opération de ce type serait-elle utilisée? Quel est le but derrière faire un peu de rotation? Je n'ai pas besoin de savoir, mais je suis juste intéressé par l'expansion des connaissances. Keith –
une très bonne question. Je viens de vérifier le code généré et le compilateur C# ne génère pas de code qui utilise les instructions de rotation du CPU (pas que l'architecture x86 les ait depuis le 8086 ...). C'est une honte. C fait cette optimisation. Les rotations sont également très importantes pour les tâches cryptographiques et dsp. –