Cosa sono gli operatori bitwise?

In un programma per computer, gli operatori bitwise sono operatori per manipolare i modelli di bit nelle espressioni. Bitwise e, o, esclusivo o (xor), non, a destra e spostamento a sinistra sono operazioni comuni. La maggior parte dei linguaggi di programmazione informatica include tutti e sei questi operatori. Sono spesso utilizzati per l'impostazione, la cancellazione o la lancio di singoli bit in programmi che controllano l'hardware del computer. Gli operatori bitwise sono anche spesso utilizzati negli algoritmi di crittografia e compressione dei dati.

Gli operatori bitwise comuni sono generalmente rappresentati simbolicamente in linguaggi di programmazione come C, C ++ e Java. Sono usati nelle espressioni proprio come gli operatori aritmetici come i segni più o meno. L'operatore bitwise ed è rappresentato con l'ampa e & , o con il tubo | e xor con il caret ^. Non noto anche come operatore del complemento, è indicato con un tilde ~ .

L'operatore di spostamento a destra utilizza un doppio car-carretto che punta a destra >> . Al contrario,Lo spostamento a sinistra è indicato da un doppio car-carretto di sinistra <<. Java include un'altra operazione di spostamento a destra, mostrata con un triplo-careta a destra >> .

Gli operatori bitwise applicano un'operazione logica a ciascuna coppia di bit nei loro operandi. Non, il turno destro e il turno di sinistra hanno solo un vero operando; Il secondo valore nelle operazioni di cambio è il conteggio dei bit. Per capire meglio come funzionano gli operatori bitwise, un individuo può visualizzare i propri operandi come numeri binari. Ad esempio, l'operatore del complemento lancia ogni bit del suo singolo operando allo stato opposto. Uno diventa uno zero e uno zero diventa uno. Il complemento del valore binario a 8 bit 00110101 è 11001010.

L'operatore e ha due operandi. Poco per bit, un'operazione logica e viene eseguita utilizzando un bit corrispondente da ciascun operando. Il risultato di ciascuna operazione di bit viene inserito in quella posizione di bit del complessivorisultato. Ad esempio, l'operatore e l'operatore elaborerà il bit 7 di un operando con bit 7 dell'altro operando. Il risultato verrà conservato nel bit 7 del risultato complessivo.

In un e operazione, entrambi i bit di oper e devono essere quelli affinché il risultato sia uno, altrimenti il ​​risultato è zero. Ad esempio, se i valori binari a 8 bit degli operandi sono 00110101 e 11110000, il risultato sarà 00110000. Un uso comune dell'operatore e l'operatore è quello di azzerare particolari bit nel risultato. Questo viene fatto posizionando zero in quelle posizioni di bit in uno degli operandi.

In un'operazione o, entrambi i bit di operand devono essere zero per il risultato che il risultato sia zero; Altrimenti, il risultato è uno. Un uso comune dell'operatore o è quello di impostare determinati bit del risultato. Questo viene fatto posizionando quelli in quei bit posizioni in uno degli operandi. Per l'operazione XOR, il risultato è zero se entrambi i bit operand sono zero o se entrambi i bit operand sono uno, altrimenti il ​​risultato è uno.

Shift sinistro aND SHIFT DESTRE Spostare i bit nell'operando a sinistra o a destra dal numero specificato di posizioni bit. Uno spostamento logico destro si sposta uno zero nella parte più a sinistra come parte dello spostamento. Un cambio aritmetico a destra copia la parte più a sinistra - il bit del segno - prima dello spostamento nella stessa posizione dopo lo spostamento. Anche il bit originale viene spostato a destra insieme al resto. Entrambi i tipi di spostamento a sinistra si spostano uno zero nella parte più a destra.

Quando un operando viene spostato a destra, il bit più a destra prima del turno venga semplicemente gettato via. Allo stesso modo, la parte più a sinistra prima che venga smaltita uno spostamento a sinistra. Non si avvolge dall'altra estremità dell'operando.

Le operazioni di spostamento bitwise sono dipendenti dalla lingua e dall'implementazione. Ad esempio, in C e C ++, >> e << eseguire turni logici se l'operando è un numero intero non firmato. Se l'operando è un numero intero firmato, è probabile che venga invece fatto uno spostamento aritmetico. In Java, tutti gli operandi sono considerati firmati e aritmoI turni etici vengono sempre eseguiti con >> e <<. L'operatore >>> viene utilizzato per uno spostamento di destra logico, ma è ancora possibile eseguire accidentalmente uno spostamento aritmetico a destra invece senza attenta tipografi.

Possono anche sorgere complicazioni quando gli operandi hanno lunghezze di bit diverse o quando alcuni sono firmati e alcuni non sono firmati. Operatori bitwise e costanti numeriche nel mezzo di un'espressione complessa non possono essere valutati come previsto. È necessario prestare attenzione a specificare la dimensione e la natura firmata/non firmata di ciascuna quantità nell'espressione. Questo può essere fatto con un'attenta tipografia o assegnazioni provvisorie a tipi di variabili specifici nel codice del programma.

ALTRE LINGUE

Questo articolo è stato utile? Grazie per il feedback Grazie per il feedback

Come possiamo aiutare? Come possiamo aiutare?