Functions > Math >


BitRotate

Exécute une opération de décalage bit à bit, avec rotation.

BitRotate ( value [, shift = 1 [, size = "W"]] )

Paramètres

value Le nombre sur lequel la fonction doit opérer.
shift [optionnel] Nombre de bits à décaler circulairement vers la gauche (les nombres négatifs décalent à droite). Si non donné, la valeur par défaut est 1.
size [optionnel] Une chaîne qui détermine la taille de la rotation, 16 bits par défaut. Voir ce qui suit.

Paramètre "size" :
"B" Rotation des bits à l'intérieur de l'octet de poids faible (8 bits).
"W" Rotation des bits à l'intérieur du mot de poids faible (16 bits).
"D" Rotation des bits à l'intérieur du double mot entier (32 bits).

Valeur de retour

Succès: Retourne le résulat de la rotation par le nombre de bits demandés.
Échec: @error <> 0 si la taille est incorrecte.

Remarques

Les opérations bit à bit sont effectuées sur des entiers 32-bit.
Les notations hexadécimales peuvent être utilisées comme arguments.

En relation

BitAND, BitNOT, BitOR, BitShift, BitXOR, Hex

Exemple

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Remarque: "b" est le symbole de l'octet.

    ;Assigne une variable locale avec une opération bit à bit d'une rotation à gauche de 1 bit sur le nombre 2.
    Local $iBitRotate1 = BitRotate(2, 1) ; 2 = 0010b rotation gauche une fois -> 4 = 0100b

    ; Remarque: Il est équivalent de faire ceci: BitShift(2, -1)

    ; Affiche le résultat: 4
    MsgBox($MB_SYSTEMMODAL, "", $iBitRotate1)

    ; Assigne une variable locale avec l'opération bit à bit d'une rotation à droite de 1 bit du nombre 1.
    Local $iBitRotate2 = BitRotate(1, -1) ; 1 = 0001b rotation droite une fois -> 32768 (32 bits) = 1000 0000 0000 0000b

    ; Affiche le résultat: 2^15 = 32768
    MsgBox($MB_SYSTEMMODAL, "", $iBitRotate2)

    ;Assigne une variable locale avec l'opération bit à bit d'une rotation à droite de 2 bits du nombre 14.
    Local $iBitRotate3 = BitRotate(14, -2) ; 14 = 1110b rotation droite deux fois -> 32771 (16 bits) = 1000 0000 0000 0011b

    ; Affiche le résultat: 32771
    MsgBox($MB_SYSTEMMODAL, "", $iBitRotate3)

    ;Assigne une variable locale avec l'opération bit à bit d'une rotation à droite de 2 bits du nombre 14 sur 32 bits.
    Local $iBitRotate4 = BitRotate(14, -2, "D")
    ; 14 = 1110b rotation droite deux fois -> -2147483645 (32 bits) = 1000 0000 0000 0000 0000 0000 0000 0011b (le premier bit est le signe)

    ; Affiche le résultat.
    MsgBox($MB_SYSTEMMODAL, "", $iBitRotate4)
EndFunc   ;==>Example