Assembly/Rappresentazione dati/Campi di bit e Packed Data

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
Indice del libro

Abbiamo finora scoperto come lavorare con singoli gruppi di bits. Può capitare di dover memorizzare più valori. Ad esempio una data (15/03/84). In questo caso, si dovrebbero utilizzare tre byte per memorizzare tutta la data. Con i Packed Data, possiamo risparmiare memoria:
Supponiamo di voler risparmiare quanto più spazio possibile. Sappiamo che: Per memorizzare il giorno abbiamo bisogno di massimo 5 bits (valori da 1 a 31, con 5 bits, possiamo rappresentare 32 valori), per il mese, invece solo di 4 (valori da 1 a 12, 4 bits = 16 valori), per l'anno (da 00 a 99) abbiamo bisogno di 7 bits. Quindi potremo memorizzare la data usando 5 + 4 + 7 = 16 bits (2 bytes) in questo modo:

|-------------------------------|
|D|D|D|D|D|M|M|M|M|Y|Y|Y|Y|Y|Y|Y|
|-------------------------------|

Risparmiando un byte.
Questo metodo ci consente di risparmiare spazio sulla RAM, ma è più lento da analizzare. Infatti ad esempio per prendere il mese dovremo fare così:

  • DATA = DATA AND 0000011110000000; (così azzero tutti i bit tranne quelli del mese)
  • DATA = DATA >> 7 (sposto i bit che mi servono a destra)

Mentre usando un byte per campo, avevamo il valore già pronto.

Modulo precedente

Numeri positivi e negativi

Torna a

Assembly

Modulo successivo

Il set di caratteri ASCII