Operazione bit a bit
![Niente fonti!](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/45px-Question_book-4.svg.png)
Le operazioni bit a bit lavorano su schemi di uno o più bit. Sono operazioni primitive, veloci, supportate direttamente dal processore, ed usate per manipolare valori, per il confronto e altri calcoli. In processori a basso costo sono operazioni tipiche, più veloci della divisione, diverse volte più veloci della moltiplicazione, e talvolta significativamente più veloci dell'addizione. Le operazioni bit a bit sono più comuni a basse prestazioni per il loro ridotto uso di risorse.
NOT
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/87/Magnifying_glass_icon_mgx2.svg/18px-Magnifying_glass_icon_mgx2.svg.png)
L'operazione bit a bit di NOT, o complemento, è un'operazione unaria che esegue la negazione logica su ogni bit, formando il complemento a uno del valore binario dato. Bit che sono 0 diventano 1, e quelli che sono 1 diventano 0. Per esempio:
NOT 0111 (decimale 7) = 1000 (decimale 8)
AND
L'operazione bit a bit AND, indicata con &, esegue un confronto tra due variabili dando come risultato una terza variabile che presenta un 1 in quelle posizioni in cui entrambe le variabili di partenza presentano 1 e uno 0 in tutte le altre.
a=60; 00111100 b=240; 11110000 c=a&b; 00110000
'c' sarà uguale a 48.
OR
L'operazione bit a bit OR, indicata con |, esegue un confronto tra due variabili dando come risultato una terza variabile che presenta un 1 in quelle posizioni in cui almeno una delle due variabili di partenza presenta 1 e uno 0 in tutte le altre posizioni (ossia le posizioni in cui entrambe le variabili presentano '0'). Potrebbe considerarsi come l'operazione simmetricamente opposta dell'AND di cui sopra.
a=60; 00111100 b=240; 11110000 c=a|b; 11111100
'c' sarà uguale a 252.
XOR
L'operazione bit a bit XOR indicata con ^, esegue un confronto tra due variabili dando come risultato una terza variabile che presenta un 1 in quelle posizioni in cui le due variabili di partenza presentano valori diversi e uno 0 in tutte le altre posizioni.
a=60; 00111100 b=240; 11110000 c=a^b; 11001100
'c' sarà uguale a 204.
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Crystal128-kmplot.svg/25px-Crystal128-kmplot.svg.png)