domenica 9 ottobre 2016

Come si scrivono i numeri?

da Wikipedia

Dipende
. Per esempio questi sono alcuni modi per scrivere lo stesso numero:

0b10000111, 0207, 0x87, 135.

Ma aspetta mi sono di nuovo limitato a un sottoinsieme, quello che uso, si può scrivere anche così:

&O207, &H87, CXXXV.

L'amico Ponder Stibbons mi dice che manca il sistema dei trolls: uno, due, tanti, un sacco.

OK, torno a noi. Di solito usiamo il sistema con base 10, i decimali.
Il sistema a base decimale è recente, ci sono tracce dappertutto di come si faceva prima, chi parla francese sa che dopo 69 viene il difficile, quando ero piccolo a Londra i soldi erano un problema doppio: oltre a non capire cosa diceva la gente vigeva il sistema £sd.

OK, mi sono di nuovo perso, torno a noi, questa volta per davvero.

Consideriamo il numero 135 base 10 come siamo abituati.
Possiamo scriverlo come

1 * 100 + 3 * 10 + 5 * 1

o anche

1 * 10^2 + 3 * 10^1 + 5 * 10^0

Ah! per poter scrivere qualsiasi numero abbiamo bisogno di 10 simboli: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9.

OK?
Dai troppo facile, ma era perché adesso volevo fare un passo avanti. Cambiamo la base. Invece di 10 usiamo 8 come si usava nei 'puters quando ero giovane (anzi prima ancora). Invece dei 10 simboli di prima ce ne bastano 8: 0, 1, 2, 3, 4, 5, 6 e 7.

Ma come facciamo a scriverlo? Vi dico come facevo io da piccolo.
Guardando la spiegazione per base 10 mi costruisco la tabella delle potenze di 8, così:

 n cioè 8^n base-8
 0  8^0   1      1
 1  8^1   8     10
 2  8^2  64    100
 3  8^3 512   1000


Prendiamo il nostro numero 135 base 10 e andiamo a trovare nella terza colonna (quella 8^n) il più grande non superiore al nostro numero. Nel nostro caso è 64. Intanto otteniamo subito un'informazione: il numero base-8 avrà 3 cifre (il numero della prima colonna n, aumentato di 1).
Poi facciamo 2 semplici calcoli aritmetici:

135 / 64 = 2 + un po'

calcolo il resto:

135 - 64 * 2 = 7

calcolo la cifra successiva del numero ottale, usando la tabella:

7 / 8 = 0 + un po'

e quindi:

7 / 1 = 7

Non mi resta che raccogliere le cfre ottenute ed ecco 207.
Facile vero? Crescendo quelli dei 'puters hanno visto che forse sarebbe stato anche meglio usare come base 16 invece di 8.
Basta dirlo, presto fatto. Abbiamo bisogno di 16 simboli: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Gli ultimi 6 possiamo scriverli anche minuscoli.
Costruisco la nuova tabella:

 n cioè 16^n base-16
 0 16^0    1       1
 1 16^1   16      10
 2 16^2  256     100
 3 16^3 4096    1000


e per il numero 135 base 10 si ha:

135 / 16 = 8 + resto
135 - 16 * 8 = 7

quindi raccogliendo ho 87.

Quelli dei 'puters usano anche un'altra base (in realtà ne usano diverse altre, ma mi riferisco a quelle più comuni): base 2, quella dei numeri binari. In questo caso la tabella diventa 0, 1, 2, 4, 8, 16, 32, 64, 128, 256, ...

Come esercizio controllate se è vero che 135 base 10 diventa 10000111 base 2.
Per base 2 c'è un trucco, quello illustrato dall'amico Luigi Bitlux Inannoccaro (rockz! -über), qui.

Ah! 'na roba ancora, anzi due.
Per chi usa Linux c'è un tool (antichissimo ma sempre utilissimo): bc che sta per binary calculator:


Ci sono 2 variabili speciali che fanno al nostro caso: ibase o obase, rispettivamente per input- e output-base:


e anche con numeri più grandi, p.es.:


Uh! per bc non è vero che posso usare i simboli minuscoli.

E per chi non ha Linux (poverini!) c'è sempre la Calcolatrice, ditele Visualizza/Programmatore.


3 commenti:

  1. Se vuoi ti presto Storia universale dei numeri di Georges Ifrah. La bibbia, insomma.

    RispondiElimina
    Risposte
    1. Panico! Non conosco & nemmeno la Wiki, neanche in français. Ma 2 tomi! (al vert?). E poi ... OK, parliamone.

      Elimina
    2. in italiaaaaano..... maddddaaaaaiiii .... :-)

      Elimina