Functions > Math >


BitShift

Effectue une opération de décalage de bits.

BitShift ( value, shift )

Paramètres

value Le nombre dont il faut décaler les bits.
shift Le nombre de bits à décaler vers la droite (un nombre négatif décale vers la gauche).

Valeur de retour

Retourne la valeur décalée du nombre de bits demandé.
Les opérations bit à bit sont effectuées sur des entiers 32 bits.

Remarque

La notation hexadécimale peut être utilisée comme arguments.
Les décalages à droite sont équivalents à des successions de divisions par deux; les décalages à gauche à des multiplications par deux.

En relation

BitAND, BitNOT, BitOR, BitRotate, BitXOR, Hex

Exemple

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ;Remarque: "b" est le symbole pour la notation binaire.

    ; Assigne une variable locale avec le résultat du décalage à gauche d'un bit du nombre 2.
    Local $iBitShift1 = BitShift(2, -1) ; 2 = 0010b décalée à gauche une fois -> 4 = 0100b

    ;Remarque: Il est équivalent de faire : BitRotate (2, 1)

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

    ; Assigne une variable locale avec le résultat du décalage à droite d'un bit du nombre 1.
    Local $iBitShift2 = BitShift(1, 1) ; 1 = 0001b décalé à droite une fois -> 0 = 0000b

    ; Affiche le résultat: 0
    MsgBox($MB_SYSTEMMODAL, "", $iBitShift2)

    ; Assigne une variable locale avec le résultat du décalage à gauche de 2 bits du nombre 14.
    Local $iBitShift3 = BitShift(14, -2) ;14 = 1110b décalé à gauche deux fois -> 56 = 0011 1000b

    ; Affiche le résultat: 56
    MsgBox($MB_SYSTEMMODAL, "", $iBitShift3)

    ; Assigne une variable locale bit à bit
    Local $iBitShift4 = BitShift(1, -31)
    ;1 = 0001b décalé à gauche 31 fois -> -2147483648 (32 bits) = 1000 0000 0000 0000 0000 0000 0000 0000b

    ;Remarque : dans la notation complément à 2, le 32ième chiffre à partir de la droite est le signe.

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