Questo è il quinto post del blog, e come già detto (o
scritto) in precedenza tratterò della codifica in memoria dei numeri negativi.
Ok… Prendiamo un numero a caso (ovviamente negativo), come
-43
Ricordate la sequenza degli 8 bit? La partenza è sempre
quella, dato che il numero è negativo, il primo bit è 1.
1
|
|
|
|
|
|
|
|
Ora che il segno è sistemato, resta il 43, quindi
convertiamolo in binario
43
21
10
5
2
1
0
|
1
1
0
1
0
1
|
43 decimale è uguale a 101011 binario.
Da qui in poi non è semplice come può sembrare. Allora,
adesso bisogna vedere per ogni cifra quanto manca per arrivare a 1, in poche
parole, se è 0 diventa 1 e viceversa.
Ora abbiamo 010100, dato che ci sono 6 cifre, mettiamo un 1
davanti -> 1010100
E ora si aggiunge 1
1010100
1
|
+
=
|
1010101
|
|
Adesso possiamo inserire 1010101 nella serie di 8 bit
1
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
Ok, visto che non ne sono sicura, vedremo come si fa il
contrario proprio con questo numero…
La prima cosa da fare è vedere il segno, il primo bit è 1,
quindi e negativo.
Ora bisogna “invertire le cifre”: cioè 101010
Adesso si aggiunge 1
101010
1
|
+
=
|
101011
|
|
Infine si converte da decimale a binario
101011B = 20
+ 21 + 23 + 25 = 1 + 2 + 8 + 32 = 43
Ora mettiamo il – e diventa -43
Bene, credevo sinceramente che non
venisse!
In teoria ci sarebbe anche la codifica in memoria dei numeri con la virgola, ma forse è un po' troppo complicata, richiede 32 bit!
Al prossimo post, non anticipo l’argomento
perché ancora ci devo pensare!! In ogni caso il prossimo fine settimana metterò
2 post (perché essendo un progetto scolastico sono indietro…).
Nessun commento:
Posta un commento