Highcolor
# Highcolor

La modalità grafica Highcolor (chiamata molto spesso Migliaia di colori specie nel mondo Macintosh) memorizza le immagini nel frame buffer utilizzando due byte per ogni pixel. Con due byte, ossia 16 bit, il colore può essere rappresentato utilizzando tutti e 16 i bit (modalità più frequente) o solo 15 bit.

## Highcolor a 15 bit

Siccome 16 bit non sono divisibile per 3, in alcune schede video si è scelto di rappresentare i colori di ciascun pixel utilizzando solo 15 bit. In questo modo 1 bit resta inutilizzato e gli altri 15 sono divisi 5 per ogni componente del colore rosso, verde e blu.

| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Contenuto | Non Utilizzato | Rosso | Rosso | Rosso | Rosso | Rosso | Verde | Verde | Verde | Verde | Verde | Blu | Blu | Blu | Blu | Blu |

In questo modo ciascuna componente di colore viene rappresentata da 32 livelli di intensità differenti, facendo uso dei 5 bit a disposizione ($2^{5}=32$).

Una variante interessante di questa modalità fu proposta all'inizio degli anni '90 dalla Cirrus Logic, un produttore di schede video con un'ampia quota di mercato in quegli anni. Cirrus Logic, con la sua modalità mista utilizzava il bit 15 per indicare che quel pixel era rappresentato con la notazione a 8 bit su una palette. In questo caso i bit da 0 a 7 indicavano il valore di lookup della palette, mentre i bit dall'8 al 14 erano inutilizzati. in questo modo si potevano avere contemporaneamente sul monitor i vantaggi di entrambe le modalità. Questa modalità, però, non ebbe successo e praticamente non fu supportata dai programmi applicativi e rimase quindi inutilizzata.

## Highcolor a 16 bit

Se si decide di utilizzare tutti i bit, una delle componenti (normalmente il verde ) può essere rappresentata a 6 bit, consentendo, così, la rappresentazione di 64 livelli di intensità ($2^{6}=64$) e un totale di 65.536 colori ($2^{16}=65.536$).

| Bit | 15 | 14 | 13 | 12 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
| - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - |
| Contenuto | Rosso | Rosso | Rosso | Rosso | Rosso | Verde | Verde | Verde | Verde | Verde | Verde | Blu | Blu | Blu | Blu | Blu |

Questo comporta però una leggera discrepanza nella codifica delle immagini. Se si vuole codificare il colore RGB a 24 bit (40,40,40) che corrisponde a 15,68% di intensità su una scala da 0 a 255 per ciascuna componente. Nella notazione binaria 40 si scrive 0010 1000. Le componenti rosso e blu che utilizzano 5 bit potranno utilizzare solo i 5 bit più significativi, ossia 00101, che corrisponde a 5 e su una scala da 0 a 31, ossia 16,13%, mentre per il verde con 6 bit a disposizione avremo 001010, che corrisponde a 10 su una scala da 0 a 63, ossia 18,87% della scala disponibile. Questa discrepanza è conosciuta come errore di subsampling.

