Partager via


>> Opérateur (Visual Basic)

Effectue un décalage arithmétique vers la droite sur un modèle de bits.

Syntaxe

result = pattern >> amount  

Pièces

result
Obligatoire. Valeur numérique intégrale. Résultat du déplacement du modèle de bits. Le type de données est identique à celui de pattern.

pattern
Obligatoire. Expression numérique intégrale. Modèle de bits à déplacer. Le type de données doit être un type intégral (SByte, Byte, Short, IntegerUShort, UIntegerLongou ULong).

amount
Obligatoire. Expression numérique. Nombre de bits à déplacer au modèle de bits. Le type de données doit être Integer ou étendu à Integer.

Remarques

Les décalages arithmétiques ne sont pas circulaires, ce qui signifie que les bits décalés d’une extrémité du résultat ne sont pas réintroduites à l’autre extrémité. Dans un décalage arithmétique vers la droite, les bits décalés au-delà de la position de bits la plus à droite sont ignorés, et le bit le plus à gauche (signe) est propagé dans les positions de bits libérées à gauche. Cela signifie qu’en pattern cas de valeur négative, les positions libérées sont définies sur une valeur ; sinon, elles sont définies sur zéro.

Notez que les types Bytede données , , UShortUIntegeret ULong ne sont pas signés, il n’y a donc aucun bit de signe à propager. S’il pattern s’agit d’un type non signé, les positions libérées sont toujours définies sur zéro.

Pour empêcher le déplacement par plus de bits que le résultat peut contenir, Visual Basic masque la valeur d’un masque de amount taille correspondant au type de données de pattern. Le fichier AND binaire de ces valeurs est utilisé pour la quantité de décalage. Les masques de taille sont les suivants :

Type de données de pattern Masque de taille (décimal) Masque de taille (hexadécimal)
SByte, Byte 7 &H00000007
Short, UShort 15 &H0000000F
Integer, UInteger 31 &H0000001F
Long, ULong 63 &H0000003F

Si amount la valeur est égale à zéro, la valeur est result identique à la valeur de pattern. Si amount elle est négative, elle est considérée comme une valeur non signée et masquée avec le masque de taille approprié.

Les décalages arithmétiques ne génèrent jamais d’exceptions de dépassement.

Surcharge

L’opérateur >> peut être surchargé, ce qui signifie qu’une classe ou une structure peut redéfinir son comportement lorsqu’un opérande a le type de cette classe ou structure. Si votre code utilise cet opérateur sur une telle classe ou structure, veillez à comprendre son comportement redéfini. Pour plus d’informations, consultez Procédures d’opérateur.

Exemple :

L’exemple suivant utilise l’opérateur >> pour effectuer des décalages arithmétiques vers la droite sur les valeurs intégrales. Le résultat a toujours le même type de données que celui de l’expression décalée.

Dim pattern As Short = 2560
' The bit pattern is 0000 1010 0000 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern >> 0
result2 = pattern >> 4
result3 = pattern >> 10
result4 = pattern >> 18
result5 = pattern >> -1

Les résultats de l’exemple précédent sont les suivants :

  • result1 est 2560 (0000 1010 0000 0000).

  • result2 est 160 (0000 0000 1010 0000).

  • result3 est 2 (0000 0000 0000 000 0010).

  • result4 est 640 (0000 0010 1000 0000).

  • result5 est 0 (décalé 15 places à droite).

La quantité de décalage pour result4 est calculée comme 18 ET 15, ce qui correspond à 2.

L’exemple suivant montre des décalages arithmétiques sur une valeur négative.

Dim negPattern As Short = -8192
' The bit pattern is 1110 0000 0000 0000.
Dim negResult1, negResult2 As Short
negResult1 = negPattern >> 4
negResult2 = negPattern >> 13

Les résultats de l’exemple précédent sont les suivants :

  • negresult1 est -512 (1111 1110 0000 0000).

  • negresult2 est -1 (le bit de signe est propagé).

Voir aussi