Operatore di assegnazione Right Shift (>>=)
Consente di spostare il valore di una variabile verso destra del numero di bit specificato nel valore dell'espressione, mantenendo il segno esistente, e di assegnare il risultato alla variabile.
result >>= expression
Argomenti
result
Qualsiasi variabile numerica.expression
Qualsiasi espressione numerica.
Note
Il risultato che si ottiene utilizzando questo operatore è analogo a quello ottenuto specificando result = result >> expression, con la differenza che result viene valutato una sola volta.
Mediante l'operatore >>= vengono spostati i bit di result verso destra del numero di bit specificati in expression. Il bit del segno di result viene utilizzato per il riempimento delle cifre da sinistra. Le cifre spostate verso destra vengono eliminate. Viene eseguito il mascheramento di expression per impedire che lo spostamento di result sia eccessivo. In caso contrario, se l'entità dello spostamento eccedesse il numero di bit incluso nel tipo di dati di result, tutti i bit originali verrebbero spostati in misura tale da non poter fornire un risultato significativo. Per garantire che a ogni spostamento venga mantenuto almeno uno dei bit originali, gli operatori appropriati calcolano l'entità effettiva dello spostamento utilizzando la seguente formula: mascheramento dell'argomento expression mediante l'operatore AND bit per bit con un numero di bit inferiore di un'unità rispetto a quello specificato in result.
Esempio
Dopo la valutazione del codice seguente, ad esempio, il valore di temp è -4. Dopo lo spostamento a destra di due bit, infatti, il valore 14 (11110010 in forma binaria) risulta uguale a -4 (11111100 in forma binaria).
var temp
temp = -14
temp >>= 2
Mediante l'esempio seguente è possibile comprendere le modalità di funzionamento del mascheramento.
var x : byte = 15;
// A byte stores 8 bits.
// The bits stored in x are 00001111
x >>= 10;
// Actual shift is 10 & (8-1) = 2
// The bits stored in x are 00000011
// The value of x is 3
print(x); // Prints 3
Requisiti
Vedere anche
Riferimenti
Operatore Left Shift bit per bit (<<)
Operatore Right Shift bit per bit (>>)
Operatore Right Shift senza segno (>>>)