In questo articolo
Cos'e l'aritmetica binaria?
L'aritmetica binaria e la matematica eseguita in base 2, usando solo le cifre 0 e 1. Ogni computer digitale elabora i dati come binari a livello hardware -- interi, numeri in virgola mobile, indirizzi di memoria e persino il testo sono memorizzati e manipolati come sequenze di bit. Comprendere il binario e essenziale per la programmazione a basso livello, le reti e la logica digitale.
Oltre alla semplice addizione e sottrazione, l'aritmetica binaria include operazioni bitwise: AND, OR, XOR, NOT e spostamenti di bit. Queste operazioni lavorano su singoli bit e sono fondamentali per compiti come l'impostazione di flag di permesso, il calcolo di checksum, il mascheramento di indirizzi IP e l'ottimizzazione di codice critico per le prestazioni.
Come funzionano le operazioni bitwise
Gli operatori bitwise elaborano gli interi bit per bit. Ogni operazione ha una tabella di verita che definisce l'output per ogni combinazione di bit di input.
- AND, OR, XOR -- AND (&) restituisce 1 solo quando entrambi i bit sono 1, OR (|) restituisce 1 quando uno dei bit e 1, e XOR (^) restituisce 1 quando i bit sono diversi. Usati per mascheramento, combinazione di flag e alternanza di bit
- NOT e spostamenti -- NOT (~) inverte tutti i bit, lo spostamento a sinistra (<<) moltiplica per potenze di 2, e lo spostamento a destra (>>) divide per potenze di 2. Lo spostamento aritmetico a destra preserva il bit di segno per i numeri negativi
- Complemento a due -- i computer moderni rappresentano gli interi negativi usando il complemento a due, dove -1 e rappresentato con tutti i bit a 1. Questo permette allo stesso hardware di eseguire sia addizione che sottrazione senza circuiti separati
Prova gratuitamente — nessuna registrazione richiesta
Calcola operazioni binarie →Quando usare le operazioni bitwise
Le operazioni bitwise sono usate nella programmazione di sistema, nelle reti e nelle applicazioni sensibili alle prestazioni.
- Flag di permesso -- i permessi dei file Unix (rwxr-xr-x = 0755) usano campi di bit dove ogni bit rappresenta un permesso specifico, verificato con AND e impostato con OR
- Maschere di sottorete -- gli ingegneri di rete usano operazioni AND tra indirizzi IP e maschere di sottorete per determinare i confini della rete e instradare il traffico correttamente
- Grafica e manipolazione dei colori -- i colori dei pixel memorizzati come interi 0xRRGGBB usano spostamenti di bit e maschere per estrarre o modificare i singoli canali rosso, verde e blu
Domande frequenti
Qual e la differenza tra interi con segno e senza segno?
Gli interi senza segno usano tutti i bit per la grandezza, quindi un intero senza segno a 8 bit va da 0 a 255. Gli interi con segno riservano il bit piu alto per il segno (positivo o negativo), quindi un intero con segno a 8 bit va da -128 a 127 in complemento a due. La scelta influenza il comportamento delle operazioni di spostamento a destra e confronto.
Lo spostamento di bit e uguale a moltiplicare o dividere per 2?
Lo spostamento a sinistra di n posizioni e equivalente a moltiplicare per 2^n per gli interi non negativi. Lo spostamento a destra divide per 2^n, ma il comportamento per i numeri negativi dipende dal tipo di spostamento: aritmetico (preserva il segno) o logico (riempie con zeri). Nella maggior parte dei linguaggi, >> e aritmetico per i tipi con segno e >>> (dove disponibile) e logico.
Perche le operazioni bitwise sono ancora rilevanti nel codice moderno?
Le operazioni bitwise sono ampiamente usate nei flag di funzionalita, nei sistemi di permessi, nei protocolli di rete, nella crittografia, nelle funzioni hash, nel rendering grafico e nella compressione dei dati. Si eseguono in un singolo ciclo CPU e non usano memoria aggiuntiva, rendendole ideali per percorsi critici per le prestazioni. I framework moderni le usano anche internamente -- React le usa per i flag degli effetti e Linux per i permessi dei file.