Operatori di spostamento bit per bit
Gli operatori di spostamento nel primo operando sinistro (<<) o destra (>>) dal numero di posizioni che il secondo operando specifica.
Sintassi
MAIUSC-espressione:
additivo-espressioneMAIUSC-espressione <<MAIUSC-espressione di additivo-espressione >> additivo-espressione
Entrambi gli operandi devono avere valori integrali.Questi operatori eseguono conversioni aritmetiche normali, il tipo del risultato è il tipo dell'operando sinistro dopo la conversione.
Per leftward gli spostamenti, i margini destro bit sgomberati è impostato su 0.Per rightward gli spostamenti, i bit sinistro sgomberati vengono completati in base al tipo del primo operando dopo la conversione.se il tipo è unsigned, sono impostate su 0.In caso contrario, vengono riempiti con copie di bit di segno.Per gli operatori di spostamento a sinistra senza overflow, l'istruzione
expr1 << expr2
equivale alla moltiplicazione per 2expr2.per gli operatori di spostamento a destra,
expr1 >> expr2
equivale a divisione per 2expr2 se expr1 è senza segno o con valore non negativo.
Il risultato di un'operazione di spostamento viene definito se il secondo operando è negativo, o se l'operando è maggiore o uguale alla larghezza in bit dell'operando sinistro promosso.
Poiché le conversioni eseguite dagli operatori di spostamento non prevedono gli stati di underflow o di overflow, le informazioni vadano perse se il risultato di un'operazione di spostamento non può essere rappresentato nel tipo del primo operando dopo la conversione.
unsigned int x, y, z;
x = 0x00AA;
y = 0x5500;
z = ( x << 8 ) + ( y >> 8 );
in questo esempio, x è le otto posizioni destra quattro e y è le posizioni quattro di destra otto.I valori spostati vengono aggiunti, fornire 0xAA55 e vengono assegnati a z.
Scorrendo un valore negativo a destra della metà del valore originale, arrotondato per difetto.Ad esempio, - 253 (11111111 binario 00000011) il bit di fuori di destra uno produce e 127 (11111111 binario 10000001).Gli spostamenti di un segno positivo 253 contempo per produrre +126.
Scorre a destra preservano il bit di segno.quando un intero con segno scorre la destra, il bit più-significativo rimane set.Quando un intero senza segno scorre la destra, il bit più-significativo viene cancellato.