Informatica
Conversione fra basi numeriche
Scrivi il numero, indica la base di partenza e ottieni tutte le altre, più il complemento a due nella dimensione di parola che scegli.
Perché binario, ottale ed esadecimale
Una base è soltanto il numero di cifre disponibili prima di dover passare alla posizione successiva. In base dieci ne abbiamo dieci, in base due solo zero e uno, in base sedici ne servono sedici e per le ultime sei si usano le lettere da A a F. Il valore di un numero non cambia con la base: cambia solo come lo si scrive.
Il binario esiste perché un circuito distingue in modo affidabile due stati e non dieci. L'esadecimale esiste perché il binario è illeggibile per un essere umano: ogni cifra esadecimale corrisponde esattamente a quattro bit, quindi la conversione fra i due è una sostituzione diretta gruppo per gruppo, senza calcoli. Lo stesso vale per l'ottale, dove una cifra vale tre bit.
Il complemento a due è il modo in cui i calcolatori rappresentano i numeri negativi, e la sua eleganza sta nel fatto che l'addizione funziona senza regole speciali sul segno. Un numero negativo si ottiene invertendo tutti i bit del suo valore assoluto e sommando uno: su otto bit, −5 diventa 11111011. Da qui segue che l'intervallo non è simmetrico, perché lo zero occupa un posto nella metà positiva: con n bit si va da −2ⁿ⁻¹ a 2ⁿ⁻¹−1.
Errori frequenti
- Confondere il bit di segno con un segno meno: in complemento a due il bit più significativo vale −2ⁿ⁻¹, non «meno». Per questo 10000000 su otto bit è −128 e non −0.
- Dimenticare che il range positivo è più corto di uno: su otto bit con segno si arriva a 127, non a 128. È la causa di gran parte degli overflow nei compiti.
- Leggere l'esadecimale come decimale: 10 in esadecimale vale 16, non dieci. Quando il contesto non è chiaro conviene usare i prefissi 0x per l'esadecimale e 0b per il binario.
Domande frequenti
Come si converte un numero da binario a decimale?
Si moltiplica ogni cifra per la potenza di due corrispondente alla sua posizione, contando da destra a partire da zero, e si sommano i risultati. 10110110 vale 128+32+16+4+2 = 182.
Come si converte da decimale a binario?
Si divide ripetutamente per due annotando i resti, e si leggono i resti dall'ultimo al primo. In alternativa si sottraggono le potenze di due a partire dalla più grande che ci sta.
Come si calcola il complemento a due di un numero negativo?
Si scrive il valore assoluto in binario nella dimensione scelta, si invertono tutti i bit e si somma uno. Per −5 su otto bit: 00000101 diventa 11111010 e sommando uno si ottiene 11111011.
Perché l'esadecimale è così usato in informatica?
Perché una cifra esadecimale corrisponde esattamente a quattro bit, quindi un byte si scrive con due sole cifre. La conversione con il binario è immediata e non richiede alcun calcolo, a differenza della conversione con il decimale.
Come funziona questo calcolo
Valore di un numero in base b con cifre cₙ…c₁c₀: V = Σ cᵢ · bⁱ, con i che parte da zero a destra. Conversione da decimale a base b: divisioni successive per b, leggendo i resti in ordine inverso. Corrispondenza diretta: una cifra esadecimale vale 4 bit, una cifra ottale vale 3 bit, quindi binario-esadecimale e binario-ottale si convertono raggruppando i bit. Complemento a due su n bit: per un valore v non negativo il pattern è v stesso; per v negativo è 2ⁿ + v, ottenibile invertendo i bit di |v| e sommando 1. Intervallo rappresentabile con segno: da −2ⁿ⁻¹ a 2ⁿ⁻¹ − 1.
Calcoli collegati
Algebra di Boole
Tabella di verità di un'espressione logica con AND, OR, NOT e XOR.
Convertitore Base64
Da testo, intero, esadecimale o binario a Base64 e ritorno, con i gruppi di 6 bit spiegati.
Calcolatore subnet IPv4
Rete, broadcast, host utilizzabili e maschere da un indirizzo IPv4 con prefisso CIDR.
Operazioni bit a bit
AND, OR, XOR, NOT, scorrimenti e rotazioni su interi a 8, 16, 32 o 64 bit, con i bit in vista.