<< Opérateur (Visual Basic)

Effectue un décalage arithmétique à gauche sur une série de bits.

Syntaxe

result = pattern << amount  

Éléments

result
Obligatoire. Valeur numérique intégrale. Résultat du décalage du modèle binaire. Le type de données est le même que celui de pattern.

pattern
Obligatoire. Expression numérique entière. Modèle binaire qui doit être décalé. Le type de données doit être un type entier (SByte, Byte, Short, UShort, Integer, UInteger, Long ou ULong).

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

Notes

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éplacement arithmétique à gauche, les bits déplacés au-delà de la plage du type de données de résultat sont ignorés et les positions de bits libérées à droite sont définies sur zéro.

Pour empêcher un déplacement de plus de bits que le résultat ne peut contenir, Visual Basic masque la valeur de amount avec un masque de taille qui correspond au type de données de pattern. Le binaire AND de ces valeurs est utilisé pour la quantité de déplacement. 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 est zéro, la valeur de result est identique à la valeur de pattern. Si amount est négatif, il est pris 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 de capacité.

Notes

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 Operator Procedures.

Exemple

L’exemple suivant utilise l’opérateur << pour effectuer des déplacements arithmétiques de gauche sur des valeurs intégrales. Le résultat a toujours le même type de données que celui de l’expression déplacée.

Dim pattern As Short = 192
' The bit pattern is 0000 0000 1100 0000.
Dim result1, result2, result3, result4, result5 As Short
result1 = pattern << 0
result2 = pattern << 4
result3 = pattern << 9
result4 = pattern << 17
result5 = pattern << -1

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

  • result1 est 192 (0000 0000 1100 0000).

  • result2 est 3072 (0000 1100 0000 0000).

  • result3 est -32768 (1000 0000 0000 0000).

  • result4 est 384 (0000 0001 1000 0000).

  • result5 est 0 (déplacé de 15 emplacements vers la gauche).

Le montant du déplacement pour result4 est calculé comme 17 ET 15, ce qui équivaut à 1.

Voir aussi