Numeri binari

Rappresentazione dati

Da leggere prima:

Nella lezione precedente, abbiamo parlato delle proprietà di sequenze composte da uno o più bit. Abbiamo mostrato che ogni volta che si aggiunge un bit, è possibile raddoppiare il numero delle combinazioni ottenibili, semplicemente assegnando rispettivamente i valori 0 ed 1 al bit più a sinistra e ripetendo due volte le sequenze ottenute con un bit in meno.

Perciò, se iniziamo utilizzando un solo bit:

One bit
0Partiremo sempre usando 0
1E successivamente 1
Da uno a due bit
00Ripetere le sequenze ottenute con un bit, aggiungendo uno zero a sinistra.
01
10Cambiare il bit a sinistra in 1, mentre il bit più a destra ripete l’andamento delle due righe precedenti
11

Solitamente, gli zeri posizionati nella parte sinistra della sequenza possono essere omessi, dimodoché 01 può essere considerato equivalente ad 1 e 00 semplicemente a 0.

Usando lo stesso metodo, possiamo facilmente scrivere le combinazioni corrispondenti a qualunque numero di bit.

Combinazioni ottenibili con 4 bit
00
11
102
113
1004
1015
1106
1117
10008
10019
101010
101111
110012
110113
111014
111115
Le prime due combinazioni ottenibili aggiungendo il quinto bit
1000016
1000117

Scrivendo le sequenze di bit nell’ordine corretto, è possibile associare ciascuna combinazione di bit ad un numero intero. Osservando le righe evidenziate, è possibile notare che tali combinazioni hanno delle proprietà particolari: innanzitutto solo uno dei bit della sequenza è pari ad 1, inoltre il loro valore corrisponde sempre ad una potenza di 2, ove la prima combinazione mostrata vale: 2^0=1.

Sequences with just a 1 in the leftmost position
112^0=1
1022^1=2
10042^2=4
100082^3=8
10000162^4=16

Se in una particolare sequenza è presente più di un bit impostato ad 1, il valore del numero intero corrispondente alla sequenza stessa potrà essere calcolato sommando i valori di ciascuno dei bit pari ad 1, come se essi comparissero da soli. Ad esempio, il valore della sequenza 1100 può essere calcolato, rispettivamente in notazione binaria ed in quella decimale, così come mostrato nel seguito.

1000+100=1100 \Rightarrow 8+4=12

Per lo stesso motivo, il valore decimale della sequenza 1110 potrà essere calcolato nel seguente modo:

1000+100+10=1110 \Rightarrow 8+4+2=14

Possiamo inoltre renderci conto che il valore associato a ciascun bit raddoppia o si dimezza se esso viene spostato verso sinistra o verso destra all’interno della sequenza. Per tale motivo, per moltiplicare o dividere un numero binario per 2 è sufficiente spostare tutti i suoi bit rispettivamente verso sinistra o verso destra di una posizione. In altri termini, per moltiplicare si aggiungerà uno zero a destra, mentre per dividere sarà sufficiente cancellare il bit più a destra.

Ad esempio, se vogliamo moltiplicare 1100 per 2, potremo scrivere:

1100 \cdot 10 = 1000\cdot10+100\cdot10= 10000+1000=11000

Usando numeri decimali, la stessa espressione potrà essere espressa come segue:

12\cdot2 = 8\cdot2+4\cdot2=16+8=24

Questo significa anche che i numeri che terminano a destra con uno zero sono pari, mentre quelli che terminano con un 1 sono dispari.