Codifica in memoria (numeri negativi)


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