backup del Post

Uno dei blog di .mau.

27/04/2012 Uncategorized ,

La base -2

L’altra volta abbiamo visto che all’inizio della cibernetica ci furono calcolatori che implementavano le operazioni interne non in base 2, ma in base 3. Ma c’è stata anche una seconda base numerica non standard che venne proposta: la base −2.

Avete letto bene: una base negativa. No, non è che per codificare i numeri si usi un numero negativo di cifre: si hanno sempre i buoni vecchi zero e uno. Quello che succede in pratica – almeno immagino: avevo solo trovato un riferimento all’esistenza di questa base senza ulteriori informazioni, e mi ero ricavato tutto il resto da solo – è che il numero 10−2 vale −2, come del resto detta la definizione polinomiale di base che abbiamo visto la volta scorsa. Quindi per avere 2 bisogna scrivere 110−2, che in effetti vale (−2)2+(−2)=4−2=2. Semplice come due e due quattro, no?

In realtà Wikipedia è un po’ più prodiga di informazioni: resto sempre stupito da cosa si possa trovare lì dentro. Qui si può leggere come nel 1885 Vittorio Grünwald fu il primo a definire basi negative, e a scrivere un articolo al riguardo sul Giornale di Battaglini; nessuno si filò però l’articolo – tanto computer non ce n’erano – e queste basi vennero riscoperte prima da A. J. Kempner nel 1936 (sempre con lo stesso oblio) e poi da Zdzisław Pawlak e A. Wakulicz nel 1959, due polacchi che riuscirono anche a costruire un calcolatore “negabinario”, il BINEG, tra il 1957 e il 1959.

Perché fare queste contorsioni mentali? Perché allora non era ben chiaro come rappresentare un numero negativo. Si pensava infatti di dover usare un bit apposta per indicare se il numero era positivo o negativo; ma la memoria, anche un singolo bit, costava. Mica come oggi, che i gigabyte vengono praticamente regalati! In questo modo il bit suppletivo non serviva, e la rappresentazione di un numero è immediata… occhei, diciamo che è sufficientemente chiara. Nelle tabelle qui sotto possiamo vedere i numeri da 1 a 30 in base −2; evito di scrivere le tabelline, perché a parte 1+1=110 sono identiche a quelle per la base 2 (ma ricordatevi che 11+1=0!).

     1,1     | 11,11111 | 21,10101
     2,110   | 12,11100 | 22,1101010
     3,111   | 13,11101 | 23,1101011
     4,100   | 14,10010 | 24,1101000
     5,101   | 15,10011 | 25,1101001
     6,11010 | 16,10000 | 26,1101110
     7,11011 | 17,10001 | 27,1101111
     8,11000 | 18,10110 | 28,1100100
     9,11001 | 19,10111 | 29,1100101
    10,11110 | 20,10100 | 30,1000010

Dalla semplice visione di questi valori si possono congetturare varie proprietà, che sono anche semplici da dimostrare: così semplici che non perdo nemmeno tempo a dimostrarle. Per esempio, tutti i numeri hanno un numero dispari di cifre; quelli con un numero pari di cifre sono negativi, se ve lo foste chiesti. Un’altra proprietà interessante è la successione delle cifre 0 e 1. Notiamo come tra le cifre meno significative, quelle cioè più a destra, si alternino 0 e 1; in quelle immediatamente a sinistra si alternano coppie di 0 e di 1; più a sinistra ancora si hanno quartetti di 0 e di 1; e così via.

I più attenti di voi avranno osservato che la stessa cosa capita coi numeri binari usuali: naturalmente la differenza sta nel fatto che in base due l’ordine è perfettamente simmetrico (almeno partendo da 0) mentre qua c’è uno sfasamento. Più precisamente, le due cifre meno significative sono le stesse in base 2 e in base −2. Andando a sinistra, e ammesso che io non abbia sbagliato i conti, vediamo che la terza cifra, quella del 4, è la stessa due volte su quattro; la quarta cifra, il −8, coincide sei volte su otto; per il 16 il rapporto è 6/16; per il 32 abbiamo 22/32 e per il 64 22/64, mentre suppongo che per la cifra del 128 il rapporto sia 86/128… Sono certo che questi numeri non siano casuali, ma non so a quale serie corrispondano: non sono neppure riuscito a trovare la successione sull’OEIS, che però i numeri negabinari li conosce, come li conosce anche MathWorld.

Tristemente, anche la base −2 non ha avuto un seguito pratico. A differenza della base 3 simmetrica, in questo caso non c’erano naturalmente problemi fisici nel codificare i livelli: ma un’altra codifica, il complemento a 1 che stiamo usando ancora oggi, permetteva di usare i numeri negativi senza necessità del bit aggiuntivo; e indubbiamente questo secondo metodo di codifica semplifica molto le operazioni. Insomma, essa resta solo come curiosità di una base aritmetica non-standard. Ma tremate: non è finita qui!

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.