Codifica binaria dei numeri naturali

La usuale rappresentazione decimale del numeri è basata sulla notazione posizionale delle cifre: il valore di ogni cifra dipende dalla sua posizione nella successione dei simboli che rappresentano il numero. Per esempio, la successione "1234" rappresenta 1x103 + 2x102 + 3x101 + 4x100. Una stessa cifra in posizioni differenti corrisponde quindi a valori diversi. Per un generico numero decimale composto da n cifre c si ha che:

cn-1cn-2...c1c0 = cn-1x10n-1 + cn-2x10n-2 + ... + c1x101 + c0x100

Con una base di numerazione B diversa da zero si avrà:

cn-1cn-2...c1c0 = cn-1xBn-1 + cn-2xBn-2 + ... + c1xB1 + c0xB0

Essendo B1 = B e B0 = 1 si ottiene:

cn-1cn-2...c1c0 = cn-1xBn-1 + cn-2xBn-2 + ... + c1xB + c0

Dividendo il tutto per il valore della base B avremo:

che può essere scomposto in

cn-1xBn-2 + cn-2xBn-3 + ... + c1+ c0/B

Otteniamo quindi un:

quozionte = cn-1xBn-2 + cn-2xBn-3 + ... + c1

resto = c0

Si noti che il resto della divisione corrisponde all'ultima cifra del numero , espresso nella notazione caratteristica della base B. Applicando ripetutamente questo processo è possible ottenere tutte le cifre del numero. Nel caso della numerazione binaria la base è B = 2, l'alfabeto comprende quindi due sole cifre, 0 e 1. Per esepio proviamo a convertire il numero 8dieci in un numero binario:

8dieci : 2dieci = quoziente 4dieci resto 0dieci (cifra binara meno significativa)

4dieci : 2dieci = quoziente 2dieci resto 0dieci

2dieci : 2dieci = quoziente 1dieci resto 0dieci

1dieci : 2dieci = quoziente 0dieci resto 1dieci (cifra binara più significativa)

Leggendo i resti dal basso verso l'alto si ottiene il numero binario 1000due
Infatti 1000due = 1x23 + 0x22 + 0x21 + 0x20 = 8dieci

La regola per convertire un numero dalla notazione decimale alla binaria è quindi:

  1. Dividere il numero decimale per due.

  2. Assegnare il resto come valore del bit, partendo dal meno significativo.

  3. Continuare a dividere per due il quoziente finché non diventa uguale a zero.

Di seguito sono riportati i primi 16 numreri decimali rappresentati nel sistema binario e in quello decimale.

Base

Base

Base

Base

due

dieci

due

dieci

due

dieci

due

dieci

0000
0
0100
4
1000
8
1100
12
0001
1
0101
5
1001
9
1101
13
0010
2
0110
6
1010
10
1110
14
0011
3
0111
7
1011
11
1111
15

Supponiamo ora di dover convertire 0.25dieci. In modo analogo a quello dei numeri naturali avrò:

0.25dieci x 2dieci = 0.50dieci prima della virgola rimane 0dieci

0.50dieci x 2dieci = 1.0dieci prima della virgola rimane 1dieci

Leggendo in questo caso dall'alto verso il basso otterrò 0,25dieci = 0.01due. Non sempre avrò una successione finita di bit, per esempio convertiamo 0.23dieci.

0.23dieci x 2dieci = 0.45dieci prima della virgola rimane 0dieci

0.45dieci x 2dieci = 0.92dieci prima della virgola rimane 0dieci

0.92dieci x 2dieci = 1.84dieci prima della virgola rimane 1dieci

0.84dieci x 2dieci = 1.68dieci prima della virgola rimane 1dieci

0.68dieci x 2dieci = 1.36dieci prima della virgola rimane 1dieci

0.36dieci x 2dieci = 0.72dieci prima della virgola rimane 0dieci

Non si arriva mai ad avere 1.00, quindi si potrebbe continuare all'infinito. Più bit uso e più precisa sarà la conversione. In questo caso 0.23dieci = 0.001110due.

Con una succesione di n bit (cifre) si rappresnetano 2n numeri naturali, da 0 a 2n-1. Nella tabella sopra riportata infatti n è uguale a 4 e vengono quindi rappresentati 24 = 16 numeri, da 0 a 15. La lunghezza delle successioni di bit stabilisce quindi il massimo numero che può essere rappresentato. Nei linguaggi di programmazione per i numeri naturali si utilizzano abitualmente successioni di 32 bit. A causa di un minor numero di simboli dell'alfabeto binario rispetto a quello decimale, occorrono più cifre per rappresentare un numero. Per rendere più sintetica la rappresentazione dei numeri manipolati dai calcolatori si sceglie di scriverli in base 16, detta esadecimale.






















































Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.