Functions > Math >


BitRotate

Effectue une op�ration de rotation sur les bits.

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