Disclaimer - Non sono un teorico dell'informazione, solo una scimmia di codice che lavora principalmente in C e C ++ (e quindi, con tipi a larghezza fissa), e la mia risposta sarà da quella prospettiva particolare.
Sono necessari in media 3,2 bit per rappresentare una singola cifra decimale: da 0 a 7 possono essere rappresentati in 3 bit, mentre 8 e 9 richiedono 4. (8*3 + 2*4)/10 == 3.21 .
Questo è meno utile di quanto sembri. Per prima cosa, ovviamente non hai frazioni di un po '. Per un altro, se stai usando tipi interi nativi (cioè, non BCD o BigInt), non stai memorizzando valori come una sequenza di cifre decimali (o loro equivalenti binari). Un tipo a 8 bit può memorizzare alcuni valori che richiedono fino a 3 cifre decimali, ma non è possibile rappresentare tutti i valori di 3 cifre decimali in 8 bit - l'intervallo è [0..255]. Non è possibile rappresentare i valori [256..999]in soli 8 bit.
Quando parliamo di valori , utilizzeremo i decimali se l'applicazione lo prevede (ad esempio, un'applicazione di digital banking). Quando parliamo di bit , di solito usiamo hex o binary (non uso quasi mai ottale poiché lavoro su sistemi che usano byte a 8 bit e parole a 32 bit, che non sono divisibili per 3).
I valori espressi in decimale non vengono mappati in modo pulito su sequenze binarie. Prendi il valore decimale 255. Gli equivalenti binari di ogni cifra sarebbe 010, 101, 101. Tuttavia, la rappresentazione binaria del valore 255è 11111111. Semplicemente non c'è corrispondenza tra nessuna delle cifre decimali nel valore alla sequenza binaria. Ma c'è una corrispondenza diretta con cifre esadecimali F == 1111, quindi quel valore può essere rappresentato come FFin esadecimale.
Se sei su un sistema in cui i byte a 9 bit e le parole a 36 bit sono la norma, allora ottale ha più senso poiché i bit si raggruppano naturalmente in tre.
- In realtà, la media per cifra è inferiore poiché 0 e 1 richiedono solo un singolo bit, mentre 2 e 3 richiedono solo 2 bit. Ma, in pratica, consideriamo da 0 a 7 per prendere 3 bit. Semplifica la vita in molti modi.
d, copre una cifra decimale, l'intervallo di0..9.3*di bit indicano tre cifre decimali e consentono di rappresentare numeri interi dall'intervallo0..999. Tutti e dieci i bit (pensa ora al binario) forniscono un intervallo di0..1023. 999 è abbastanza vicino al 1023, ma un po 'meno. Quindi potresti aspettarti cheddovrebbe essere poco meno di 10/3.