Contare le pecore

I pastori contano sempre le pecore al rientro nell'ovile, casomai se ne fosse persa qualcuna e si dovesse andare a cercarla.

Ovviamente, come tutti sanno, contare le pecore è qualcosa di estremamente noioso e sonnolento. Ecco come la racconta l'autore del Novellino [http://it.wikipedia.org/wiki/Novellino].

XXXI QUI CONTA D'UNO NOVELLATORE DI MESSERE AZZOLINO.

Messere Azzolino avea uno suo novellatore, il quale facea favolare,  quando erano le notti grandi di verno. Una notte avvenne che 'l favolatore  avea grande talento di dormire, ed Azzolino il pregava che favolasse. Il favolatore incominciò a dire una favola d'uno villano, che avea suoi cento bisanti: il quale andò a uno mercato, a comperare berbìci, ed èbbene due per bisante. Tornando con le sue pecore, uno fiume ch'avea passato, era molto cresciuto, per una grande pioggia che venuta era. Stando alla riva, vide uno pescator povero, con uno suo burchiello a dismisura picciolino, sìcché non vi capea, se non il villano ed una pecora per volta. Allora il villano cominciò a passare con una berbìce, e cominciò a vogare. Lo fiume era largo. Voga e passa. E lo favolatore restò di favolare. Ed Azzolino disse: – Va' oltre! – E lo favolatore rispose: – Lasciate passare le pecore, e poi racconterò il fatto. – Ché le pecore non sarebbeno passate in uno anno, sicché intanto puoté ben ad agio dormire.

Però, ho conosciuto una volta con un pastore che amava chiacchierare con i vicini, e quindi era alla ricerca di un sistema che permettesse di tenere il conto delle pecore con le dita, senza bisogno di ricordarsi alcunché.

Dato che i pastori non sono rinomati per la loro agilità con le dita, supponiamo che ogni dito possa stare in solo due posizioni, su e giù, o aperto e chiuso. Con dieci dita, qual è il numero massimo di pecore che si possono contare?

Per quanto possa sembrare incredibile, il numero massimo è 1023, ovvero 210-1, ed ovviamente corrisponde a contare in base due. Dato che forse non tutti sono a loro agio con i sistemi di numerazione, facciamo un breve ripasso. Quando scriviamo un numero, diciamo 12345, intendiamo che sia in base 10, ovvero che valga

1234510 = 1⋅104+2⋅103+3⋅102+4⋅101+5⋅100,

dove ovviamente 100=1. Per scrivere i numeri in una base, abbiamo bisogno di un numero di simboli differenti pari alla base stessa, così in base 10 abbiamo bisogno delle 10 cifre 0123456789, in base 16 aggiungiamo anche A(10), B(11), C(12), D(13), E(14) e F(15), mentre in base due abbiamo bisogno solo dei due simboli 0 e 1. Risulta facile capire come calcolare l'equivalente decimale di un numero binario, per esempio

1001001 = 1⋅26+0⋅25+0⋅24+1⋅23+0⋅22+0⋅21+1⋅20 = 73.

Ma come fare le conversioni tra una base e l'altra? Per esempio, dato un numero x, come si fa a scriverlo in binario?  Beh, le cifre altro non sono che il resto della divisione del numero per le potenze della base. Ovvero: dividiamo x per la base b, annotiamo il resto e il quoziente, ridividiamo il quoziente per la base, annotando di nuovo resto e quoziente, e così via finché il quoziente è nullo. La sequenza dei resti, letti alla rovescia, ci dà il numero in base b. Per esempio, il numero 1234510 viene

ovvero 1234510 = 110000001110012. In base due è facile calcolare il resto, basta vedere se il numero è pari o dispari.

Restano da fare le somme (almeno l'incremento di uno). In base dieci, la regola per sommare uno è: incrementiamo l'ultima cifra, se supera 9 incrementiamo quella che segue (riporto) e inseriamo zero, e poi controlliamo se anche la cifra seguente ha bisogno di riporto, e così via. In base due è lo stesso, solo che abbiamo solo due cifre, per cui 0+1=1, 1+1=...0 con riporto di 1. così possiamo contare:

Se provate a farlo con le dita, scoprirete che è anche un buon sistema per tenere in allenamento le falangi

I computer rappresentano internamente i numeri in base due, e dato che hanno un numero finito di cifre a disposizione, possono approfittarne per un ulteriore trucco riguardo alla rappresentazione dei numeri negativi. Un numero negativo, per esempio -54, è quel numero che sommato a 54 dà zero. Noi usiamo un simbolo speciale, il meno ("-") per rappresentare i numero negativi, ma si può riuscire a rappresentare i numeri negativi usando sempre gli stessi simboli, sfruttando appunto il numero finito di cifre. Guardiamo cosa succede in base due, usando il cosiddetto sistema di complemento a due [http://it.wikipedia.org/wiki/Complemento_a_due]. Il numero 50, usando 10 cifre, è in base due

0000110110

Vogliamo trovare un numero che sommato a questo faccia 0. Partendo da destra, è chiaro che dobbiamo sommare uno zero, e poi un uno così che otteniamo zero con riporto di uno. Il riporto azzera anche la terza cifra (1) ma non la quarta, quindi dobbiamo mettere un uno. Il riporto successivo azzera quindi i due uni, e poi dobbiamo aggiungere 1 fino ad avere un riporto sull'11-esima cifra che però viene persa dato che usiamo solo 10 cifre. Il numero -50 in base due in complemento di due è

1111001010

che si può ottenere da quello positivo semplicemente scambiando tutti gli zero in uno e viceversa, e poi sommando uno.

In realtà, non è così inconsueto fare calcoli in basi non decimali: il tempo e gli angoli si contano in basi "strampalate", in base variabile. Un angolo è espresso come:

α  = 57° 23' 45'',004

La prima cifra è decimale e conta i gradi (se si vuole, si può contare i gradi in base 360 e tenere fuori i "giri" completi), i minuti e i secondi in base 60 e i centesimi o millesimi di secondo in base decimale. Se sommimao ad α altri 20'', ci troviamo costretti a "riportare" i minuti, dato che 45'+2''=1' 5''. Per i gradi però abbiamo un sistema più semplice: usare i radianti, che sono numeri puri che esprimono un angolo come il rapporto tra lunghezza dell'arco della circonferenza tracciato dall'angolo stesso e la lunghezza del raggio di tale circonferenza. I radianti, come gli altri numeri,  si possono poi esprimere in qualsiasi base si voglia...

Per il tempo è anche peggio. Una data (in Italia) si esprime come

5/6/2014 10:33:02

in cui non solo le basi delle diverse cifre sono tutte diverse, ma anche la posizione è sbagliata! Se volessimo inserire un poco di ordine dovremmo almeno scrivere AAAA/MM/GG hh:mm:ss

2014/6/5 10:33:02

dove abbiamo, da destra a sinistra, i secondi ed i minuti in base 60, le ore in base 24, i giorni in base 28, 29, 30 o 31 a seconda del mese e dell'anno, i mesi in base 12 e gli anni in base decimale.

Si può capire perché internamente ai computer le date siano tenute in maniera molto diversa, di solito come numero di secondi a partire dalla data zero, che per convenzione è il 1 gennaio 1970. Questa convenzione ha un suo problema: alle ore 03:14:07 del 19 gennaio 2038 la rappresentazione interna della data nei computer con parole a 32 bit diventerà negativa, a causa della rappresentazione in complemento di due dei numeri [http://it.wikipedia.org/wiki/Bug_dell%27anno_2038]. In realtà si stima che per quella data quasi tutti i sistemi informatici saranno stati aggiornati, ma il problema si può verificare anche molto prima, per esempio,  chiedendo un mutuo a 30 anni potrebbe succedere che le ultime rate vengano calcolare come numeri negativi e la banca ci paghi invece di incassare.. non sarebbe male. 

Concludiamo con una battuta che solo i lettori più attenti potranno capire:

Ci sono solo 10 persone che capiscono i numeri binari: io e un mio amico...

Franco Bagnoli