Un computer in base 3

Noi contiamo in base 10. Dopo il 9, smettiamo di inventare nuovi simboli e aggiungiamo una nuova cifra al numero, che diventa per l’appunto 10. Non c’è nessuna ragione speciale per avere dieci simboli, non di più né di meno: probabilmente tutto dipende dal fatto che abbiamo dieci dita. C’è chi propugna una base 12, perché in questo modo sarebbe più semplice dividere l’unità in parti uguali: ma noi umani siamo troppo abituati a contare così per fare un cambiamento di questo tipo. Tutt’altra cosa per i computer, però!

Innanzitutto un rapido ripasso su cosa significa scrivere un numero in base b. Se abbiamo il numero cdefgb, noi dobbiamo leggerlo come c·b4 + d·b3 + e·b2 + f·b + g; insomma se procediamo da destra a sinistra iniziando a contare da zero dobbiamo moltiplicare la i-esima cifra per la i-esima potenza della base. Detto così sembra inutilmente complicato, lo so: ma ci servirà in seguito. La seconda cosa che serve è la tavola pitagorica: abbiamo due tabelle di dimensione b×b, una per la somma e una per la moltiplicazione.

I primissimi computer, quelli ancora elettromeccanici, lavoravano in base 10 per abitudine e perché comunque era necessario interfacciarsi con i “calcolatori”, nel senso di “persone che fanno i calcoli”. Quando si è passati ai primi calcolatori elettronici le cose sono mutate: per un computer infatti la base più naturale era la base 2, perché la si può mettere in campo con un circuito on/off che ha appunto due valori. Ci penserà poi il computer stesso a convertire tra base 2 e base 10: è un compito stupido, ma proprio per questo il computer è adattissimo a farlo. Le tavole pitagoriche per la base 2 sono banali, e le vediamo qui sotto.

tabelline in base due
Quello che non è probabilmente noto è che all’inizio della storia dei computer erano state proposte anche altre basi, proprio come erano state proposte altre dimensioni per il byte: oggi lavoriamo in esadecimale (un byte è un ottetto, formato da due gruppi di quattro bit) ma quando ero un giovane universitario ho usato un PDP 11/34 che lavorava in ottale, con l’unità di base chiamata nibble che era un nonetto formato da tre gruppi di tre bit.

Non credo che ci fosse una correlazione, ma all’inizio dello sviluppo dei computer, oltre che la base 10 e la poi vincente base 2, era stata proposta e usata anche la base 3. La scelta era dettata da considerazioni fisiche, perché si può immaginare che un circuito di memorizzazione possa avere una tensione positiva, negativa oppure nulla. C’era però una particolarità che se non conoscete non potreste mai indovinare: quei computer non usavano una base 3 standard, ma una sua variante, la base 3 bilanciata che usa come cifre 0, 1 e -1 (che scriverò M per usare un solo carattere). A ben pensarci, è anche logico: se abbiamo tensioni +,−,0 perché dobbiamo rimapparle in 0, 1, 2?

L’aritmetica con la base 3 bilanciata presenta alcune peculiarità a cui bisogna abituarsi. Il numero successivo a 1 è il numero a due cifre 1M3b; se prendete la definizione data sopra per computare un numero in base b, potete subito verificare che in effetti 1M3b = 3+(-1) = 2. Ecco la lista dei numeri da 0 a 10 in base 3 bilanciata, con tra parentesi il numero corrispondente in base 10, seguita dalle tavole pitagoriche: per comodità non userò più l’indice 3b.

    0 (0),
    1 (1),
    1M (2),
    10 (3),
    11 (4),
    1MM (5),
    1M0 (6),
    1M1 (7),
    10M (8),
    100 (9),
    101 (10)

tabelline in base 3 bilanciata
Da un punto di vista teorico la base 3, bilanciata o no che sia, sarebbe quella ottimale, perché è il miglior compromesso tra numero di simboli richiesto e lunghezza dei numeri tipicamente usati (anche se… ma magari ne parliamo un’altra volta). La versione bilanciata della base semplifica anche le tavole pitagoriche, soprattutto quella della moltiplicazione che è sempre la peggiore da implementare; come avete visto, anch’esse sono simmetriche. Purtroppo però la tecnologia negli anni 1950 non riusciva a creare circuiti flip-flop-flap abbastanza affidabili, e oggi ricominciare da capo e creare nuovi componenti di questo tipo è troppo costoso per essere pratico. Restano comunque gli usi teorici della base: scrivere un numero in base tre bilanciata permette di risolvere immediatamente il problema dei pesi di Bachet.

Abbiamo una bilancia a due piatti, e dobbiamo pesare un oggetto: qual è l’insieme di pesi ottimale per essere in grado di pesare oggetti da 1 a un dato numero n? La risposta è “si usa l’insieme di pesi di 1, 3, 9, 27… grammi”. Un oggetto pesante 17 grammi, infatti, può essere pesato mettendolo su un piatto insieme ai pesi da uno e nove grammi e ponendo sull’altro piatto il peso da 27 grammi. Ma 17 in base 3 bilanciata – il nome significherà pure qualcosa, no? – si scrive 1M0M: quindi il nostro oggetto sta insieme ai pesi corrispondenti alla cifra M nella rappresentazione, mentre quelli corrispondenti alla cifra 1 stanno dall’altra parte e quelli con lo 0 si lasciano da parte. Visto? teoria e pratica si complementano!