Assembly/Rappresentazione dati/Campi di bit e Packed Data

Wikibooks, manuali e libri di testo liberi.
Jump to navigation Jump to search
Assembly
modifica
Indice

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.

1leftarrow.png Modulo precedente

Numeri positivi e negativi

1uparrow.png Torna a

Assembly

1rightarrow.png Modulo successivo

Il set di caratteri ASCII