Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
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 :
result1est 2560 (0000 1010 0000 0000).result2est 160 (0000 0000 1010 0000).result3est 2 (0000 0000 0000 000 0010).result4est 640 (0000 0010 1000 0000).result5est 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 :
negresult1est -512 (1111 1110 0000 0000).negresult2est -1 (le bit de signe est propagé).