Isenção de responsabilidade - Eu não sou um teórico da informação, apenas um macaco de código que trabalha principalmente em C e C ++ (e, portanto, com tipos de largura fixa), e minha resposta será daquela perspectiva em particular.
Leva em média 3,2 bits para representar um único dígito decimal - 0 a 7 pode ser representado em 3 bits, enquanto 8 e 9 requerem 4. (8*3 + 2*4)/10 == 3.2
1 .
Isso é menos útil do que parece. Por um lado, você obviamente não tem frações de um pouco. Por outro lado, se você estiver usando tipos inteiros nativos (ou seja, não BCD ou BigInt), você não está armazenando valores como uma seqüência de dígitos decimais (ou seus equivalentes binários). Um tipo de 8 bits pode armazenar alguns valores que ocupam até 3 dígitos decimais, mas você não pode representar todos os valores de 3 dígitos decimais em 8 bits - o intervalo é [0..255]
. Você não pode representar os valores [256..999]
em apenas 8 bits.
Quando estamos falando de valores , usaremos o decimal se o aplicativo esperar (por exemplo, um aplicativo de banco digital). Quando estamos falando de bits , geralmente usamos hex ou binário (quase nunca uso octal, já que trabalho em sistemas que usam bytes de 8 bits e palavras de 32 bits, que não são Divisível por 3).
Valores expressos em decimal não são mapeados corretamente para seqüências binárias. Pegue o valor decimal 255
. Os equivalentes binários de cada dígito seriam 010
, 101
, 101
. Ainda assim, a representação binária do valor 255
é 11111111
. Simplesmente não há correspondência entre qualquer dos dígitos decimais no valor da seqüência binária. Mas há uma correspondência direta com dígitos hexadecimais - F == 1111
, de modo que o valor pode ser representado como FF
em hexadecimal.
Se você estiver em um sistema onde bytes de 9 bits e palavras de 36 bits são a norma, então octal faz mais sentido, já que os bits se agrupam naturalmente em três.
- Na verdade, a média por dígito é menor, já que 0 e 1 requerem apenas um único bit, enquanto que 2 e 3 requerem apenas 2 bits. Mas, na prática, consideramos 0 a 7 para tomar 3 bits. Apenas torna a vida mais fácil de várias maneiras.