Flash Lite 2 |
|||
| Guide de référence du langage ActionScript Flash Lite 2.x > Eléments du langage ActionScript > Opérateurs > Opérateur >> de décalage droit au niveau du bit | |||
expression1 >> expression2
Convertit expression1 et expression2 en entiers 32 bits et décale tous les bits d'expression1 vers la droite du nombre d'unités spécifié par l'entier résultant de la conversion d'expression2. Les bits décalés vers la droite sont supprimés. Pour préserver le signe de l'expression d'origine, les bits situés à gauche sont remplacés par des 0 si le bit le plus significatif (le bit le plus à gauche) d'expression1 est 0, et par des 1 si le bit le plus significatif est 1. Le décalage d'une valeur d'une unité équivaut à une division par 2 et au rejet du reste.
Les nombres à virgule flottante sont convertis en entiers en supprimant les chiffres après la virgule. Les entiers positifs sont convertis en valeur hexadécimale non signée dont la valeur maximale est de 4294967295 ou 0xFFFFFFFF. Les valeurs supérieures au maximum perdent leurs chiffres les plus significatifs lorsqu'elles sont converties, de façon à ce que la valeur demeure à 32 bits. Les nombres négatifs sont convertis en valeur hexadécimale non signée par l'intermédiaire de la notation complément à deux, la valeur minimale étant de -2147483648 ou 0x800000000. Les nombres inférieurs à cette valeur minimale sont convertis en complément à deux avec une plus grande précision et perdent leurs chiffres les plus significatifs.
La valeur renvoyée est interprétée en tant que nombre à complément à deux avec un signe, ce qui signifie que la valeur renvoyée sera un entier compris entre -2147483648 et 2147483647.
Disponibilité : ActionScript 1.0 ; Flash Lite 2.0
expression1 : Number - Nombre ou expression à décaler vers la droite.
expression2 : Number - Nombre ou expression à convertir en entier compris entre 0 et 31.
Number - Résultat de l'opération au niveau du bit.
L'exemple suivant convertit 65535 en entier 32 bits et le décale de 8 bits vers la droite :
var x:Number = 65535 >> 8; trace(x); // Renvoie 255
L'exemple suivant affiche le résultat de l'exemple précédent :
var x:Number = 255;
Ceci est dû au fait que 65535 en décimal équivaut à 1111111111111111 en binaire (seize 1), 1111111111111111 en binaire décalé de 8 bits vers la droite représente 11111111 en binaire, et que 11111111 en binaire est égal à 255 en décimal. Le bit le plus significatif est 0 car il s'agit d'entiers 32 bits, le bit de remplissage est donc 0.
L'exemple suivant convertit -1 en entier 32 bits et le décale de 1 bit vers la droite :
var x:Number = -1 >> 1; trace(x); // Renvoie -1
L'exemple suivant affiche le résultat de l'exemple précédent :
var x:Number = -1;
Ceci est dû au fait que -1 en décimal équivaut à 11111111111111111111111111111111 en binaire (trente-deux 1), le décalage de un bit vers la droite entraîne la suppression du bit le moins significatif (le bit le plus à droite) et le remplacement du bit le plus significatif par la valeur 1. Le résultat obtenu est 11111111111111111111111111111111 (trente-deux 1) en binaire, soit l'entier 32 bits -1.
Opérateur >>= de décalage droit au niveau du bit et d'affectation