Assembly/Rappresentazione dati/Campi di bit e Packed Data

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