In informatica, un'operazione bit a bit opera su una stringa di bit, un array di bit o un numero binario (considerato una stringa di bit) a livello dei suoi singoli 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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]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
[modifica | modifica wikitesto]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.