binari
Capire i numeri binari.
Francesco Melis su smanettando, 19\01\2013, h.22.47.

Il sistema di numerazione binario.
In questo post descriverò un esempio che porto nei corsi di formazione
che spiega in termini molto elementari il sistema di numerazione
binario. La metodica usata è quella di spostare il problema in
discussione su un altro piano: quello dell'esperienza diretta quotidiana
delle persone. Si sposta quindi il vero problema su un'altra questione,
familiare per chiunque, dimodoché sia facile ed intuitivo coglierne la
logica. Una volta capito il meccanismo funzionale sottostante la
situazione familiare descritta, con un processo di astrazione, si coglie
quella che è la "struttura" del problema e la si traspone, si spera in
maniera indolore, nel campo dell'argomento tecnico del quale si sta
trattando.
L'obbiettivo è quello di far capire con un esempio molto semplice che
cos'è, come è costituito e come si legge un numero binario. Tutte le
tematiche teoriche e gli approfondimenti quindi sono demandati ad un
manuale di studio.
Per capire la logica del sistema di numerazione binario, cioè quel
misterioso sistema usato nei calcolatori e costituito di soli 0 ed 1
useremo una... bilancia.
Sì, avete capito bene! Una bilancia.
La bilancia che dovete pensare è quella di precisione dei farmacisti o
degli orafi, quella con i due piattini con le catenelle. Per pesare con
queste bilance, cosa nota a tutti, si pone su un piatto la massa da
pesare, oro o altri metalli preziosi per gli orafi o sostanze chimiche
per il farmacista e si pongono sull'altro piattino uno o più pesi
campione. Tutte le bilance di questo tipo dispongono di una collezione
di pesi campione, immagino da 100 grammi, 50 grammi, 10 grammi, 5
grammi, 2 grammi, un grammo. Immagino anche che ci siano più esemplari
del peso da 1 grammo eccetera.
All'inizio della pesata il piatto con la masserella incognita, per il
peso, chiaramente scende giù, mentre l'altro piattino, ove ancora non
abbiamo posato nessun peso campione, ovviamente rimane su.
Ora cominciamo ad aggiungere dei pesi campione sul piattino vuoto. Il
piattino comincia leggermente a scendere. Continuiamo ad aggiungere pesi
campione fino a quando i due piatti sono perfettamente orizzontali: ciò
significa che essendo i due piatti in equilibrio contengono le stesse
masse. Il gioco è fatto: basta contare i pesi campione per vedere quanto
pesa la masserella incognita. Se per creare l'equilibrio abbiamo dovuto
usare la massa da 10 grammi, quella da 2 grammi e quella da 1 grammo
allora la massa incognita sarà ovviamente 10+2+1 = 13 grammi.
Fin qui credo che non ci piova e, anzi... forse sarebbero bastate anche
molte meno parole di quante ne ho usato per spiegare una cosa che è
veramente banale e facente parte dell'esperienza di tutti.
Bene. Ora immaginiamo una bilancia di questo tipo appena detto, solo che
il pizzicagnolo che ce l'ha prestata è un tipo un po' originale e si è
organizzato a modo suo in questa maniera. La rastrelliera con i pesi
campione da usare per creare l'equilibrio dei piatti contiene un unico
esemplare di ogni pesetto e questi, bontà sua, sono: il peso da 16
grammi, il peso da 8 grammi, il peso da 4 grammi, il peso da 2 grammi ed
il peso da 1 grammo.
Questa bilancia, lo diciamo subito pesa al massimo fino a 31 grammi,
infatti mettendo tutti i pesi campione su un piatto la loro somma è 16 +
8 + 4 + 2 + 1 = 31 grammi.
Vediamo se con questa bilancia veramente riusciamo a pesare qualunque
masserella fino ad un massimo di 31 grammi.
Di seguito faccio un elenco di tutte le possibilità di pesata, dalla più
leggera di un grammo fino alla più pesante di 31 grammi. A fianco di
ogni valore scriverò quali pesi campione si devono usare per creare
l'equilibrio. Per esempio, se la masserella incognita fosse di 11 grammi
allora mi serve di usare il pesetto da 8 grammi, quello da due grammi e
quello da 1 grammo. Infatti 8+2+1=11 grammi.
Tabella delle pesate possibili  con la bilancia e pesi campione da usare
per creare l'equilibrio.
1 grammo: Uso il peso campione da 1 grammo
2 grammi: 2
3 grammi: 2 + 1
4 grammi: 4
5 grammi: 4 + 1
6 grammi: 4 + 2
7 grammi: 4 + 2 + 1
8 grammi: 8
9 grammi: 8 + 1
10 grammi : 8 + 2
11 grammi: 8 + 2 + 1
12 grammi: 8 + 4
13 grammi: 8 + 4 + 1
14 grammi: 8 + 4 + 2
15 grammi: 8 + 4 + 2 + 1
16 grammi: 16
17 grammi: 16 + 1
18 grammi: 16 + 2
19 grammi: 16 + 2 + 1
20 grammi: 16 + 4
21 grammi: 16 + 4 + 1
22 grammi: 16 + 4 + 2
23 grammi: 16 + 4 + 2 + 1
24 grammi: 16 + 8
25 grammi: 16 + 8 + 1
26 grammi: 16 + 8 + 2
27 grammi: 16 + 8 + 2 + 1
28 grammi: 16 + 8 + 4
29 grammi: 16 + 8 + 4 + 1
30 grammi: 16 + 8 + 4 + 2
31 grammi: 16 + 8 + 4 + 2 + 1
Come si può notare abbiamo potuto fare tutte le pesate possibili pur
usando questi strani pesi campione in unico esemplare.
Bene! Ora ci serve un altro strumento che tutti abbiamo a disposizione:
la nostra mano sinistra.
Supponiamo che alla nostra mano sinistra aperta con il palmo rivolto
verso l'alto associamo i pesi campione in questa maniera: il pollicione
sia il peso da 16 grammi, l'indice sia il peso da 8 grammi, il medio sia
il peso da 4 grammi, l'anulare  sia il peso da 2 grammi ed il mignolo
sia il peso da 1 grammo.
Con la mano sinistra aperta in questa maniera il pollicione (16 grammi)
si trova a sinistra ed il mignolo (1 grammo) si trova a destra.
Bene! Ora prendiamo una masserella da pesare. Io so che la masserella da
pesare pesa 21 grammi ma voi non lo sapete e quindi dovete usare la
bilancia per determinare la sua massa.
Cominciamo a mettere dei pesi campione sul piatto. Metto il 16... uhm!
Non basta.
Aggiungo il peso da 8... uhm! Troppo! Levo l'otto e ci metto il 4. Beh!
Quasi ci siamo... ma ancora pende...
Aggiungo il peso da 1. Ah! Ora ci siamo! Abbiamo creato l'equilibrio. La
masserella pesa 21 grammi. Vediamo quali dita, (pesi campione), abbiamo
usato: il pollice (16 grammi), il medio (4 grammi) ed il mignolo (1
grammo). Ora facciamo questa operazione: le dita che non sono servite le
chiudiamo e lasciamo aperte le dita che invece abbiamo usato. Osserviamo
quindi che il pollice sta aperto, l'indice è chiuso, il medio è aperto,
l'anulare è chiuso ed il mignolo è aperto.
Adesso annotiamo un fatto: scriviamo su un pezzo di carta o dove pare a
voi questo che sto per dirvi. Per ogni dito della mano sinistra
scriveremo sul pezzo di carta un 1 od uno 0 a seconda che il dito sia
stato preso in considerazione o meno per fare la pesata. Occorre
scrivere quindi in ogni caso cinque cifre affiancate costituite dallo
zero o dall'uno.
Nel caso della pesata da 21 grammi appena vista allora avrò:
1)    Mi è servito il pollice ed allora scriverò un 1
2)    Non mi è servito l'indice e scriverò uno 0
3)    Mi è servito il medio ed allora scriverò un 1
4)    Non mi è servito l'anulare e scriverò uno 0
5)    Mi è servito il mignolo ed allora scriverò un 1
Osserviamo allora i nostri cinque numeretti: 10101
Beh! Che ci crediate o no questa è la rappresentazione nel sistema di
numerazione binario del numero decimale 21.
Ogni cifra binaria, cioè lo 0 o l'1 si chiama bit.
Vediamo ora un'altra pesata stavolta espressa in binario da
interpretare: 10001
Beh! Qui è chiaro che è stato usato il pollice (16 grammi) ed il mignolo
(1 grammo). Il numero decimale corrispondente è quindi 16+1=17
Penso che non sia il caso di stare a farla tanto lunga. Spero che
l'esempio sia servito a capire come si legge e come si compone un numero
binario avente un certo valore. Il numero binario si legge scandendo
tutte le cifre uno, uno, zero, zero eccetera...
Di seguito scrivo tutta la tabella da 1 fino  a 31 in cui il primo
numero è il decimale ed a destra la sua rappresentazione in binario,
tanto ormai avete capito il giochetto. Essa servirà a controllare i
vostri esercizi se vi andrà di farli.
Decimale; binario
1 00001
2 00010
3 00011
4 00100
5 00101
6 00110
7 00111
8 01000
9 01001
10 01010
11 01011
12 01100
13 01101
14 01110
15 01111
16 10000
17 10001
18 10010
19 10011
20 10100
21 10101
22 10110
23 10111
24 11000
25 11001
26 11010
27 11011
28 11100
29 11101
30 11110
31 11111

Bene, sperando di essere stato chiaro, con questo concludo questa
piccola introduzione e se la cosa vi ha interessato potete pormi delle
domande (e ce ne stanno!!). Con una raccomandazione ragionevole. Nella
vita, io, come tutti, ho diverse cose da pensare per cui i miei
contributi saranno conseguenti ai miei impegni in termini di tempo e
quindi le risposte arriveranno quando avrò il modo.
***
d.

 se ti fosse possibile, potresti anche indicare
 qualche esercizio da fare , anche se non si può pretendere da te che faccia
 pure le correzioni degli esercizi...
r.
il post sui numeri binari l'ho congegnato in modo tale che se qualcuno
ha voglia di fare qualche esercizio può controllarne da sè la
correttezza andando a vedere la tabellina finale in cui per ogni numero
da 1 a 31 vi è a fianco la rappresentazione in binario.
Per esempio potreste prendere un numero a caso, per esempio facciamo il
14. Ovviamente nel gioco della bilancia il peso in effetti già lo sapete
in quanto lo avete scelto voi, in questo caso il 14, e la bilancia in
effetti serve a vedere quali pesi campione occorre usare per arrivare a
comporre la massa di 14 grammi per arrivare all'equilibrio della
bilancia. Individuate qual è il peso più grosso che potete mettere sulla
bilancia che ovviamente non superi 14 e mettetelo sul piatto. Ovviamente
è il peso 8 dato che il 16 già sforerebbe e non andrebbe affatto bene.
Poi aggiungete mano a mano i pesi considerando sempre quello più grosso
che potrebbe entrare in quella situazione. Adesso sulla bilancia ho il
peso 8 e chiaramente posso aggiungere il 4 dato che "non sforo". 8 + 4
fa 12 e ancora non siamo all'equilibrio. Aggiungo allora il 2 e sono
arrivato all'equilibrio: infatti 8 + 4 + 2 = 14. Ho usato l'indice (peso
8), il medio (peso 4) e l'anulare (peso 2), tutte le altre dita
rimangono chiuse. Adesso comincio a scrivere sul pezzo di carta gli 1 e
gli 0 partendo dal pollice.
Il pollice non l'ho preso allora scrivo 0.
l'indice l'ho preso ed allora scrivo 1
il medio l'ho preso ed allora scrivo 1
l'anulare l'ho preso ed allora scrivo 1
il mignolo non l'ho preso ed allora scrivo 0

Complessivamente quindi vi ritrovate il numero binario 01110 che se
andate a controllare sulla tabellina è proprio 14.
Potete fare le prove con tutti i valori da 0 fino a 31 e controllare
quindi il vostro risultato sulla tabellina.
Potete anche fare il viceversa. Scrivete a caso un numero binario di 5
bit e determinatene il valore decimale. Anche in questo caso la
tabellina può servire come verifica di controllo.

Sicuramente molti di voi ci avranno già pensato. Ma come si fa a contare
numeri più grandi di 31? diciamo fino a 255?
Beh! ovviamente ci vuole la mano di ET l'extraterrestre che ha 8 dita...
(in effetti mi pare che ne avesse 3 però fa niente... passatemi la
licenza!).
In tal caso la mano di ET avrà associato alle dita, partendo dal dito
alla estrema sinistra, i seguenti valori che sono, notate bene, di
valore sempre doppio rispetto al dito immediatamente alla destra.
Primo dito a sinistra: peso 128 grammi
Secondo dito da sinistra: peso 64 grammi
Terzo dito da sinistra: peso 32 grammi
Quarto dito da sinistra: peso 16 grammi
Quinto dito da sinistra: peso 8 grammi
Sesto dito da sinistra: peso 4 grammi
Settimo dito da sinistra: peso 2 grammi
Ottavo dito da sinistra: peso 1 grammo

Se fate la somma degli 8 numeri corrispondenti ai pesi associati alle
dita di ET abbiamo 128+64+32+16+8+4+2+1=255
Che è la pesata massima ottenibile con 8 bit.
Ovviamente fra i numeri c'è anche lo 0 rappresentato in binario con
00000000 per cui tutti i numeri rappresentabili da 8 bit sono i 255
visti prima più lo 0. In tutto sono 256 numeri.
Bene! un numero di 8 cifre, (meglio se diciamo 8 bit), può rappresentare
256 numeri diversi e si chiama... byte!!!!
Sì il famoso byte è quindi semplicemente un numero binario di 8 bit. Il
numero massimo rappresentabile è 255 e rappresenta uno di 256 possibili
numeri. Ogni cifra binaria costituente questo numero di 8 cifre si
chiama bit.
Ma ci avete pensato? la vostra barra braille è ad 8 punti. Mmmm! e
quanti caratteri diversi può rappresentare il braille ad 8 punti? ma 256
caratteri ovvio! non vi dice niente questa somiglianza?
E se invece la barra è a 6 punti. Beh! facile! 2 elevato 6 caratteri
cioè 64 caratteri.
Insomma fra braille e binario c'è una strettissima correlazione! diciamo
che sono quasi la stessa cosa. Se il punto c'è allora 1, se invece è
abbassato allora 0!
***
d.

 Allora aggiungo una domanda: e se dovessi scrivere un numero maggiore di 31?
 Per esempio 54?
 Oppure non serve?

r.
per rappresentare numeri più grandi di 31, o in generale qualunque
numero, occorre capire quanti bit ci vogliono per rappresentarlo. Dal
momento che si è capito che tutto gioca con i "pesi" è chiaro che ci
vuole qualche altro pesetto in più rispetto ai cinque pesi associati
alle dita della mano sinistra. L'esempio con le dita della mano sinistra
l'ho portato per capire il principio della numerazione binaria ed è
chiaro che per rappresentare numeri più grandi ci vogliono più dita,  o
meglio dire più bit.
Nel caso del numero 54 ci serve per forza il peso da 32 grammi. In ogni
caso ricordati che devi sempre rappresentare tutti i bit, anche dei pesi
che non hai usato, (con lo 0).
54 si compone così:
32 grammi sì
16 grammi sì
8 grammi no
4 grammi sì
2 grammi sì
1 grammo no

in definitiva 110110
nota che adesso i bit sono 6 altrimenti non puoi rappresentare il 54.
Con 6 bit (esattamente come nel braille a 6 punti) rappresenti tutti i
numeri fino al 63 che con lo 0 (spazio in braille) fanno 64.
Nota anche che puoi aggiungere tutti gli zeri che vuoi alla sinistra
perché il numero non cambia. E' solo rappresentato con più bit ma il suo
valore è sempre lo stesso.
Quindi posso rappresentare per esempio il 2 in questa maniera: 10 ma
anche 010, oppure 00000010.
Diversa è la questione se aggiungi degli 0 a destra. Allora il numero
cambia eccome! e sai come cambia? mettendo uno 0 a destra hai
moltiplicato il numero per 2. Esempio: prendi il 3 cioe in binario 011.
Adesso mettici uno 0 a destra e diventa 0110. Questo numero presenta i
pesi 2 e 4 cioè vale 6 che è il doppio di 3.
Pare superfluo dirlo ma per calcolare il valore del numero devi partire
da destra. Cioè ragionando così come in questo esempio del numero 47 che
in binario si rappresenta con 101111
Partendo da destra abbiamo:
c'è il peso 1
c'è il peso 2
c'è il peso 4
c'è il peso 8
non c'è il peso 16
c'è il peso 32

Adesso fai la somma dei pesi presenti nel numero: 1+2+4+8+32=47

Adesso di sotto incollo un metodo (algoritmo) più formale per
rappresentare in binario un numero qualunque (purché sia positivo, cioè
in valore assoluto, perché per rappresentare anche i numeri negativi è
un po' più doloroso e non è ancora il momento perché cambiano molte
carte in tavola).
La difficoltà con il metodo algoritmico ora aumenta dato che usciamo dal
familiare visto finora in cui abbiamo contato con le dita e si entra un
po' nella metodologia di pensiero con cui si creano i programmi.
L'esempio è tratto dalle mie dispensine:
Algoritmo di conversione dal decimale al binario
Passo N° 1: prendi il numero decimale
Passo N° 2: se il numero è 0 vai al passo 7 altrimenti vai al passo 3
Passo N° 3: dividi il numero per 2
Passo N° 4: scrivi il resto della divisione in un foglio
Passo N° 5: scrivi il quoziente e consideralo come un nuovo numero
Passo N° 6: vai al passo 2
Passo N° 7: scrivi i resti delle divisioni in ordine inverso rispetto
all'ordine in cui sono stati generati
Passo N° 8: STOP

Esempio: convertire il numero 59 in binario.

59 : 2 = 29 resto = 1
29 : 2 = 14 resto = 1
14 : 2 = 7 resto = 0
7 : 2 = 3 resto = 1
3 : 2 = 1 resto = 1
1 : 2 = 0 resto = 1

Il numero binario si ottiene scrivendo i resti in ordine inverso cioè
111011.

***
d.
 lascia stare!
 stanotte non ho chiuso occhio perchè stavo divertendomi a fare i numeri
 anche più grandi di 256 usando tutti i metodi possibili. ahahhha aiuto....
 che forza......
 mi piace molto di più della numerazione decimale mooolto più divertente e
 avvincente.
 e santo cielo!....... stanotte leggendo un tuo post sugli hardware e
 software, avevi detto che un byte misura fino ad un massimo di 256.....
 allorché ho detto..... cose del tipo.... ma cosa? aiutooo. sto
 sbagliando...... poi hai confermato la mia intuizione di stanotte.... che lo
 zero conta. ahahhaah e che cavolo non lo sapevo mica.... ho fatto salti
 mortali per fare i calcoli pensando di sbagliare sempre e invece il bit più
 a sinistra degli otto  che compongono il byte, da 128 quindi sommando tutto
 128+64+32+16+8+4+2+1 è uguale a 255. e li è partito il mio viaggio nel
 binario del sistema binario. ne sono uscito indenne.... grazie....
 leggo con amorevolezza le dispensine..... e con la mia compagna dattilo
 braille super rumorosa, svolgo somme e sottrazioni.
 e poi un'altra cosa che mi pare di aver intravisto all'interno di questo
 sistema incredibile..... e cioè che quando sommi i vari pesi di ogni bit a
 partire da sinistra a quello di destra,
 il campione di misurazione è sempre un numero prima del campione di
 misurazione successivo. esempio... se sommo 3 più 2 più 1, ottengo 7 che è
 un numero prima di 8....... è come se i vari valori si incastrassero nella
 potenza di 2.... quindi se prendessi per esempio 8 più 4 più 2 più 1 il
 risultato è 15 che guarda caso è dispari e guarda caso si ferma prima della
 potenza successiva della nostra bilanciona binaria. ahahahah
 dici che è una cavolata?
 un po spiegato male..... è una cosa fresca devo distribuirla bene.
r.
sono molto contento che ti stia appassionando al sistema binario. In
effetti l'Informatica con la I maiuscola parte proprio da questo
sistema. Con il tempo manderò anche altri interventi se c'è interesse da
parte vostra.
Hai detto tutto giusto: è proprio così, 7 viene prima della potenza di 2
successiva che è 8; 15 viene prima della potenza 16 e così via.
Adesso timidamente butto li anche qualche rappresentazione un po' più
formale: con n bit si rappresentano 2 elevato n numeri binari diversi
fra loro (compreso lo 0 ovviamente). Il numero massimo rappresentabile
con n bit è pari a (2 alla n) meno 1.
Adesso puoi vedere bene perché il kilo informatico è 1024: esso è
proprio la potenza 2 elevato 10 ed il numero massimo rappresentabile con
10 bit è 1023. Il mega invece è 2 elevato 20 che tra l'altro per le
proprietà delle potenze aventi la stessa base si può anche scrivere 2^10
per 2^10 (il cappelletto è il simbolo di elevazione a potenza). In
binario quindi abbiamo grandezze che come nome somigliano alle grandezze
decimali però essendo basate sul 2 hanno valori che si discostano un
poco dall'equivalente kilo decimale che vale esattamente 1000.
Aggiungo anche, come curiosità, che tutti i numeri binari che finiscono
con 1 sono dispari e quelli che finiscono per 0 sono pari.
Se sei appassionato a queste cose ti divertirà anche conoscere il modo,
molto ingegnoso, con il quale si rappresentano in binario i numeri
negativi. Ti lascio con questo piccolo mistero che al momento non voglio
svelare altrimenti la gente si spaventa e molla tutto...
in binario c'è solo lo 0 e l'1 e quindi non c'è il trattino del segno
meno da mettere davanti ai numeri per indicare che sono negativi ed
allora come si fa a riconoscere che un numero è negativo?
In effetti le cose subiscono un notevole ampliamento e quello che vi ho
descritto finora, che mantiene ovviamente la sua rilevanza e validità,
rientra come caso particolare dei numeri relativi.

***
d.

 Molte grazie: il sistema mi pare un pò simile al scrivere con i numeri
 esadecimali, mutatis mutandis...
r.
sì, il binario è somigliante al sistema esadecimale e ci sono delle
curiosità in proposito. Intanto, per chi non sa cosa sia il sistema di
numerazione esadecimale, diciamo brevemente che è un altro sistema di
numerazione usato in informatica dai programmatori e che si fonda sulla
base 16. Mentre in binario la base è il 2 ora la base è il 16. In questo
sistema le cifre possibili sono un misto di cifre e lettere: 0 1 2 3 4 5
6 7 8 9 A B C D E F, cioè le 10 cifre del sistema decimale più le
lettere dalla A alla F. In tutto quindi sono 16 simboli.
il significato ed il valore delle cifre è il seguente.
le cifre dallo 0 al 9 hanno lo stesso valore come nel sistema decimale
mentre per le lettere abbiamo:
A = dieci decimale
B = undici decimale
C = dodici decimale
D = tredici decimale
E = quattordici decimale
F = quindici decimale.

Ora i pesi delle cifre di un numero espresso in esadecimale si devono
considerare in questa maniera. Partendo dalla cifra più a destra abbiamo:
peso 1: l'unità, che in termini di potenze potremo esprimere anche come
16 elevato 0 che da proprio 1);
peso 16 (o potenza 16 elevato 1)
peso 256 (o potenza 16 elevato 2)
peso 4096 (o potenza 16 elevato 3)
ecc...

Per esempio il numero esadecimale B4 avrà il valore 11 per 16 + 4 = 180
decimale
4 rappresenta le unità. La seconda cifra, B, vale 11 decimale che va
moltiplicato per il suo peso che è 16 e ci fornisce complessivamente 11
per 16 più 4 = 180.
In esadecimale il modo con cui si calcola il valore del numero si
avvicina al modo che usiamo nel sistema decimale. 2013 in decimale
infatti significa 3 unità più 1 decina più 0 centinaia più due migliaia.
Ogni cifra anche in decimale va moltiplicata per il suo peso.

Niente paura comunque!
Adesso vi mostro un trucco per scrivere un numero in esadecimale
partendo da un numero binario.
Prendiamo un byte per esempio 10110100 che vale 180 come sappiamo.
Partiamo da destra e prendiamo gli ultimi 4 bit. Essi sono 0100 che
hanno valore quattro. Scriviamo allora il valore in esadecimale che come
si può vedere dalla tabellina precedente delle cifre esadecimali è
proprio 4 e corrisponde quindi anche al suo valore decimale. Prendiamo
ora altri 4 bit andando sempre verso sinistra. In questo caso sono
proprio gli ultimi 4 bit 1011 più a sinistra che valgono undici decimale
e vediamo il suo valore esadecimale vedendo nella tabellina. Il valore
di 11 decimale è dato dalla lettera B. Quindi la rappresentazione
esadecimale del numero 180 è 10110100 in binario e B4 in esadecimale.
In informatica, nel passato, si usava anche il sistema ottale in base 8.
Chiunque comunque, per gioco, si può costruire un proprio sistema di
numerazione in una base qualunque, ternaria, quaternaria, quinaria eccetera.

***
d.

 no.... ho letto delle cose sui numeri negativi e sul complemento a 2 ma non
 riesco a capire... mi servirebbe una spiegazione delle tue. perchè gli
 esempi che ci sono in giro mi risultano difficili da comprendere.
r.

Materiale didattico on line se ne trova in abbondanza.
Di seguito il link per il materiale del corso di programmazione
dell'Università di Catania
www.diit.unict.it/users/michele/didattica/fondamenti/fondamenti/indice.html

Arrivati a questo livello di trattazione del binario, in cui ci si sta
occupando delle rappresentazioni complementate, non è più tanto semplice
spiegare le cose con esempi terra terra così come ho fatto con
l'introduzione al sistema di numerazione binario.
Gli esempi che ho riportato in passato sono quelli che uso nei corsi di
formazione per centralinisti telefonici o per la formazione
tifloinformatica nell'ambito dei processi riabilitativi. Anche se
apparentemente banali, essi sono frutto di raffinamenti successivi
sviluppati e perfezionati negli anni per essere intesi da persone senza
preparazioni specifiche di base. Come avrai notato, praticamente non c'è
traccia di notazioni matematiche sofisticate e quel poco che c'è nelle
dispense è semplificato quanto basta per far capire le cose senza
tuttavia snaturarle.
La trattazione degli aspetti di cui si parla ora, essendo avanzati, non
rientrano quindi fra gli strumenti didattici adattati che io ho messo a
punto per i miei scopi del lavoro tiflodidattico con i disabili della vista.
Questo significa che per gli argomenti avanzati occorre cimentarsi con
il linguaggio e la notazione che si fa in ambito universitario. Ciò
comporta una certa dimestichezza con notazioni matematiche che non sono
molto familiari a chi ha una cultura scientifica di livello solo liceale.
Mi proverò però a cercare di dare una spiegazione semplice della
rappresentazione in complemento a 2 dei numeri binari.
Consideriamo un insieme di n cifre binarie, per esempio 8 cifre. Abbiamo
quindi 1 byte. In valore assoluto esso rappresenta tutti i numeri in
valore assoluto dallo 0 fino al numero 255.
Dividiamo il range di questi valori a metà in questa maniera: Il primo
intervallo sia quello dei numeri da 0 fino a +127, mentre il secondo
intervallo sia quello dei valori da +128 fino a +255.
Il primo intervallo è costituito da numeri che hanno il bit più a
sinistra pari a 0.
00000000
00000001
00000010
...
...
01111111

Il secondo intervallo è costituito da numeri che hanno il bit più a
sinistra pari ad 1.
10000000
10000001
10000010
...
...
11111111

Nella rappresentazione in complemento a 2 si fa questa assunzione:
Il primo bit a sinistra pari a 0 rappresenta i numeri positivi, percio
il byte rappresenta tutti i numeri che vanno da 0 a +127.
Il primo bit a sinistra pari ad 1 rappresenta i numeri negativi in
quest'ordine:
10000000 è da considerare pari a -128. Il trattino ovviamente significa
segno meno. Ciò significa che il primo bit a sinistra in notazione in
complemento a 2 deve essere sempre considerato di peso -128. Gli altri
bit più a destra vanno considerati con il valore positivo che già conosci.
10000001 vale -127, infatti è -128+1=-127
10000010 vale -126 infatti è -128+2=-126
...
...
11111111 vale -1 infatti è -128+1+2+4+8+16+32+64=-128+127=-1

Quindi se si guarda l'asse dei numeri la sequenza dei valori
rappresentati è da leggersi come nella seguente tabella in cui a
sinistra vi è il numero in valore assoluto così come hai visto con i
numeri binari senza segno fino ad ora, ed a destra il valore del numero
con segno. Fino a 127 le due rappresentazioni corrispondono. A partire
da 128 i numeri sono quelli negativi e sarà -128, -127, -126, ..., -1
Piccola curiosità: la tabella non l'ho fatta a mano altrimenti avrei
fatto notte. L'ho fatta in un attimo con excel e poi ho incollato
nell'editor di testo con il quale scrivo le mail prima di passare queste
al programma di posta.
Le descrizioni continuano dopo la tabella.

0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
10    10
11    11
12    12
13    13
14    14
15    15
16    16
17    17
18    18
19    19
20    20
21    21
22    22
23    23
24    24
25    25
26    26
27    27
28    28
29    29
30    30
31    31
32    32
33    33
34    34
35    35
36    36
37    37
38    38
39    39
40    40
41    41
42    42
43    43
44    44
45    45
46    46
47    47
48    48
49    49
50    50
51    51
52    52
53    53
54    54
55    55
56    56
57    57
58    58
59    59
60    60
61    61
62    62
63    63
64    64
65    65
66    66
67    67
68    68
69    69
70    70
71    71
72    72
73    73
74    74
75    75
76    76
77    77
78    78
79    79
80    80
81    81
82    82
83    83
84    84
85    85
86    86
87    87
88    88
89    89
90    90
91    91
92    92
93    93
94    94
95    95
96    96
97    97
98    98
99    99
100    100
101    101
102    102
103    103
104    104
105    105
106    106
107    107
108    108
109    109
110    110
111    111
112    112
113    113
114    114
115    115
116    116
117    117
118    118
119    119
120    120
121    121
122    122
123    123
124    124
125    125
126    126
127    127
128    -128
129    -127
130    -126
131    -125
132    -124
133    -123
134    -122
135    -121
136    -120
137    -119
138    -118
139    -117
140    -116
141    -115
142    -114
143    -113
144    -112
145    -111
146    -110
147    -109
148    -108
149    -107
150    -106
151    -105
152    -104
153    -103
154    -102
155    -101
156    -100
157    -99
158    -98
159    -97
160    -96
161    -95
162    -94
163    -93
164    -92
165    -91
166    -90
167    -89
168    -88
169    -87
170    -86
171    -85
172    -84
173    -83
174    -82
175    -81
176    -80
177    -79
178    -78
179    -77
180    -76
181    -75
182    -74
183    -73
184    -72
185    -71
186    -70
187    -69
188    -68
189    -67
190    -66
191    -65
192    -64
193    -63
194    -62
195    -61
196    -60
197    -59
198    -58
199    -57
200    -56
201    -55
202    -54
203    -53
204    -52
205    -51
206    -50
207    -49
208    -48
209    -47
210    -46
211    -45
212    -44
213    -43
214    -42
215    -41
216    -40
217    -39
218    -38
219    -37
220    -36
221    -35
222    -34
223    -33
224    -32
225    -31
226    -30
227    -29
228    -28
229    -27
230    -26
231    -25
232    -24
233    -23
234    -22
235    -21
236    -20
237    -19
238    -18
239    -17
240    -16
241    -15
242    -14
243    -13
244    -12
245    -11
246    -10
247    -9
248    -8
249    -7
250    -6
251    -5
252    -4
253    -3
254    -2
255    -1

Per interpretare un numero scritto in complemento a 2 allora si deve
vedere il suo primo bit di segno. Se il bit è 0 allora il numero è
positivo ed il suo valore lo puoi calcolare con i sistemi che già
conosci. Se invece il numero comincia per 1 allora esso è negativo e va
letto in questa maniera. Occorre fare la somma di -128 più il valore che
ottieni dagli altri bit calcolati con il metodo normale.
Per esempio
Il byte 10000110 vale -128+2+4=-122
Il byte 11001111 vale -128+1+2+4+8+64=-49
Il byte 01000011 vale +67

Per cambiare di segno un numero scritto in complemento a 2 si possono
seguire due metodi.
Primo metodo: invertire tutti i bit del numero e sommare 1.
Secondo metodo: partendo da destra ed andando verso sinistra occorre
scrivere tutti i bit inalterati fino al primo 1 incluso e invertire
tutti gli altri bit.
Esempio:
+30 in binario è 00011110
Il -30 si fa lasciando tutti i bit inalterati partendo da destra fino al
primo 1 incluso e invertendo gli altri.
+30 = 00011110
-30 = 11100010

Con la notazione in complemento a 2 le operazioni aritmetiche si fanno
normalmente così come facciamo in decimale.
I computers lavorano internamente con la notazione in complemento a 2.
Per esempio, in linguaggio macchina, se nel programma vi è un'istruzione
di salto con indirizzamento relativo ad una istruzione contenuta in una
determinata cella di memoria, questo salto è rappresentato dal numero di
bytes che bisogna aggiungere (salto in avanti), o togliere (salto
all'indietro), all'indirizzo della cella attuale, per raggiungere la
cella contenente l'istruzione macchina referenziata. Ovviamente i salti
in avanti saranno specificati da numeri positivi mentre i salti
all'indietro, essendo delle sottrazioni dall'indirizzo base, saranno
negativi.
Torna all'indice