Rappresentazione posizionale degli interi

Ricordiamo che la notazione decimale posizionale, cui siamo abituati, è quella in cui il significato di ciascuno dei dieci simboli  di  base  (le cifre  0,1,2,3,4,5,6,7,8,9)  dipende dalla posizione di questo all' interno della sequenza di cifre che rappresenta un determinato numero intero.
P. es. il numero  361 va interpretato come: 3 centinaia + 6 decine + 1 unità . Ovvero:

3 102 + 6 101 + 1 100

Se invece di usare le dieci cifre usuali ne usiamo solo due (0,1 rappresentabili in un circuito mediante tensione alta e tensione bassa) avremo la possibilità di una rappresentazione posizionale  in base due in cui un numero è costituito unicamente da una sequenza di 0 e 1.
P.es.

11010  va interpretato come

1   24 + 1   23 + 0   22 + 1   21 + 0   20

Ovvero, indicando con un sottoscritto  10  oppure  2  la rappresentazione in base 10 o 2 rispettivamente,

110102 = 2610

In base 8  avremo a disposizione le 8 cifre 0,1,2,3,4,5,6,7  ed un numero come   1238 (da leggere: "uno due tre ottale") va interpretato sulla base dell' espressione

1   82 + 2   81 + 3   80

per dare 8310.

Ancora, se la base è maggiore di 10 occorrono ulteriori simboli per rappresentare le cifre oltre il 9. Nel caso della base 16 (molto utilizzata con i computer) si introducono i simboli (lettere) a,b,c,d,e,f  per rappresentare le cifre pari ai valori numerici (decimali) di 10,11,12,13,14 e 15.

Pertanto numeri come a316 oppure ff16  (da leggere "a tre esadecimale" oppure "effe effe esadecimale")   vanno tradotti in base 10 come
10  161 + 3  160 = 16310        ( usando il fatto che    a16 = 1010 )
e   
15  161 + 15  160 = 25510      (usando il fatto che      f16 = 1510 )
rispettivamente.

Per trasformare numeri  interi da base 10 a base qualsiasi,  vale il seguente algoritmo basato sulle propieta'  del quoziente e del resto della divisione tra interi:

0. si divide il numero che si vuole trasformare per la base.
1. Il resto diventa la cifra meno significativa del numero espresso nella nuova base.
2. Il quoziente viene diviso di nuovo per la base.
3. Il nuovo resto sarà la cifra  successiva della rappresentazione nella nuova base.
4. Si riapplicano i passi 2 e 3 fino al punto in cui si ottiene 0  come quoziente al passo 2.
5. Il resto darà la cifra più  significativa e termina la conversione.

Esempi:

  1. vogliamo trasformare  83 da base 10 a base 8:  
      1. 83/8  =  10   con resto 3
      2. 10/8  =    1   con resto 2
      3.   1/8  =    0   con resto 1
      4. prendiamo i resti nell' ordine inverso a quello di apparizione:  123  in base 8.

  2. vogliamo trasformare  93 da base 10 a base 16:  
      1. 93/16   =   5   con resto  13, rappresentato dalla cifra d
      2.   5/16   =   0   con resto  5
      3. prendiamo i resti nell' ordine inverso a quello di apparizione:  5d  in base 16.

  3. vogliamo trasformare  25 da base 10 a base 2:  
      1. 25/2   =   12   con resto  1
      2. 12/2   =     6   con resto  0
      3.   6/2   =     3   con resto  0
      4.   3/2   =     1   con resto  1
      5.   1/2   =     0   con resto  1
      6. prendiamo i resti nell' ordine inverso a quello di apparizione:  11001  in base 2.
Si lascia come esercizio verificare che l'  algoritmo fornisce la rappresentazione cercata  (si tratta di utilizzare direttamente la definizione di quoziente e resto della divisione tra interi).


Per conversioni tra due basi entrambe diverse da 10, in generale si passa per una conversione intermedia in base 10 (in cui si sanno  eseguire i calcoli agevolmente).
Se pero' le due basi sono una una potenza dell'  altra la conversione si semplifica notevolmente e puo'  essere eseguita  in modo diretto (senza passaggio per base 10) sempicemente lavorando sulla conversione  a gruppi di cifre.

Vediamo un esempio di conversioni tra base 2 e base 16=24:

si parte dall'  osservazione che le cifre esadecimali   (0, ...  , f)  sono rappresentabili mediante numeri binari a 4 cifre:
0 <-> 0000
1 <-> 0001
2 <-> 0010
...
e <-> 1110
f  <-> 1111

Sfruttando le proprieta'  dell' aritmetica si vede facilmente che per passare da un numero in rappresentazione binaria alla corrispondente rappresentazione esadecimale bastera' raggruppare le cifre binarie a 4 alla volta (iniziando dalla meno significativa, l' ultima a destra)  completando con zeri iniziali se l' ultimo gruppo di quattro cifre risultasse incompleto.  E poi si converte ciascuno dei gruppi di quattro cifre binarie nella crrispondente cifra esadecmale.

Es:
     1110112 =  0011 1011 =  3b16

Per la conversione esadecimale-binaria si procede analogamente: ad ogni cifra esadecimale,  nell'  ordine di apparizione si fa corrispondere la sequenza di 4 cifre binarie corrispondente.

Es:
     fa16  =  1111 1010 = 111110102