Quantos bits por dígito no sistema decimal [fechado]

29

Vou ensinar um pequeno grupo de pessoas sobre os sistemas de numeração em computação e queria saber quantos bits por dígito existem no sistema decimal, por exemplo:

  • Hex (base 16) - 4 bits
  • Octal (base 8) - 3 bits
  • Binário (base 2) - 1 bit
  • Decimal (base 10) -?
por user92592 28.11.2017 / 12:07

10 respostas

98

O que você está procurando é o logaritmo de 10 baseado em 2, que é um número irracional em torno de 3.32192809489 ....

O fato de você não poder usar um número inteiro de bits para um dígito decimal é a causa raiz de porque muitas frações que são fáceis de expressar no sistema decimal (por exemplo, 1/5 ou 0,2) são impossíveis (não difícil: realmente impossível) para expressar em binário. Isso é importante ao avaliar erros de arredondamento em aritmética de ponto flutuante.

    
por 28.11.2017 / 12:12
21

Em outras palavras, qual quantidade de informação está contida em um único dígito nesses sistemas.

Para base 2, base 4, base 8, base 16 e outras bases 2 N a resposta é óbvia porque em uma base 2 N cada dígito pode ser expresso com exatamente N dígitos.

Como você consegue N dado 2 N ? Bem, você usa um logaritmo baseado em 2, que é um inverso da exponenciação.

  • log 2 2 = 1 (1 bit por dígito na base 2)
  • log 2 4 = 2 (2 bits por dígito na base 4)
  • log 2 8 = 3 (3 bits por dígito na base 8)
  • log 2 16 = 4 (4 bits por dígito na base 16)

Logaritmos de números baseados em K que não são potências de K não são números cardinais. Em particular:

  • log 2 10 = 3.321928094887362347870319429489390175864831393024580612054…

Esse número pode parecer confuso, mas na verdade tem alguns usos. Por exemplo, é uma entropia de um único dígito decimal.

Para o seu caso, porém, não acho que esse valor seja de alguma utilidade. @ resposta de Christian faz um bom trabalho em explicar porquê.

    
por 28.11.2017 / 12:26
8

Sobre o assunto dos bits:

Sinto dizer que a pergunta está errada. Você não usaria bits dessa maneira. Um bit é um dígito binário . Você pode converter o número decimal 10, em um binário 1010 (8 + 2), então você precisaria de 4 bits para expressar o valor decimal 10.

Poderes de 2

Você caiu em uma armadilha, usando binário (2), octal (8) e hexadecimal (16) como exemplos, porque estes são todos potências de 2, e assim você pode pensar neles em termos de bits, enquanto 10 não é uma potência de 2, então não funciona muito bem assim.

    
por 28.11.2017 / 12:35
7

BCD - decimal decimal codificado usa 4 bits por dígito, o mesmo que hexadecimal.

link

    
por 28.11.2017 / 17:11
3

O uso de bits implica uma potência de 2, assim, como outros disseram, você não pode facilmente enviar 10 bits para bytes sem desperdício. Uma solução comum é usar 4 bits de acordo com o hexadecimal e gastar os 6 estados representados como A-F. O interessante é fazer matemática decimal com isso - não é legal e simples.

Uma idéia de ensino útil pode ser comparar como o Micky Mouse pode ter desenvolvido um sistema de contagem, já que ele tem apenas 4 dedos por mão - o que leva naturalmente a um sistema baseado em octal.

    
por 28.11.2017 / 12:27
3

Isso pode ser uma simplificação excessiva, mas depende de qual pergunta você está fazendo.
(e a resposta é basicamente octal ou hexadecimal)

Eu também não considero bits fracionários como bits porque, em termos de uso prático, os bits não têm frações.

Q1: Quantos bits você pode representar em um dígito decimal ?

A1: Você pode representar 3 bits de informação em um único dígito decimal:

O esquema mais comum seria o binário direto com quebra automática onde 0 = 8 = 000 e 1 = 9 = 001. Mas você poderia usar qualquer esquema, não há nada que diga que esta é a única maneira de codificar bits em dígitos decimais.

  • 0: 000
  • 1: 001
  • 2: 010
  • 3: 011
  • 4: 100
  • 5: 101
  • 6: 110
  • 7: 111
  • 8: 000 < - quebra automática (ou não usada)
  • 9: 001 < - quebra automática (ou não utilizada)

ou

Q2: Quantos bits são necessários para representar um dígito decimal?

A2: Você precisa de pelo menos 4 bits para representar todos os dígitos decimais. Com algum desperdício ou embrulho.

Mais uma vez, o esquema mais comum seria o binário direto com quebra automática, mas você poderia usar qualquer outro esquema.

  • 0: 0000
  • 1: 0001
  • 2: 0010
  • 3: 0011
  • 4: 0100
  • 5: 0101
  • 6: 0110
  • 7: 0111
  • 8: 1000
  • 9: 1001
  • 0: 1010 < - quebra automática (ou não usada)
  • 1: 1011 < - quebra automática (ou não usada)
  • 2: 1100 < - quebra automática (ou não usada)
  • 3: 1101 < - quebra automática (ou não utilizada)
  • 4: 1110 < - quebra automática (ou não usada)
  • 5: 1111 < - quebra automática (ou não usada)
por 29.11.2017 / 23:18
2

Na base 1024, cada símbolo é de 10 bits. Três dígitos decimais têm a mesma quantidade de informação que um dígito na base 1000, que é ligeiramente menor que 1024. Portanto, um dígito decimal tem um pouco menos que 10/3 bits. Essa aproximação dá 3.333333 ..., enquanto o número exato é 3.321928 ...

    
por 28.11.2017 / 21:58
1
  • Hex (base 16) - 4 bits
  • Octal (base 8) - 3 bits
  • Binário (base 2) - 1 bit
  • Decimal (base 10) - 3 1/3 bits.
    2 10 = 1,024
    10 3 = 1,000
    2 20 = 1,048,576
    10 6 = 1.000.000
    3 dígitos na base 10 até 999 podem ser mantidos em 10 bits na base 2.
    6 dígitos na base 10 até 999.999 podem ser mantidos em 20 bits na base 2.
    Esta é a origem da criação de kilobytes, megabytes e gigabytes.
por 29.11.2017 / 22:13
0

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.

    1. 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.

por 28.11.2017 / 20:50
0

Se eu estivesse ensinando isso, primeiro explicaria o que é um número (expresso como uma série de dígitos significa). i.e., da direita para a esquerda, assumindo base n, a * n ^ 0 + b * n ^ 1 + c * n ^ 2 ... z * n ^ y.

Em seguida, explique que 10 ^ 3 é aproximadamente igual a 2 ^ 10. Não é exato e é a razão em computadores, muitas vezes não sabemos o que significa 2k realmente (é 2.000 ou 2.048?) Ele serve bastante bem para aproximações rápidas. 2 ^ 16 é de cerca de 2 ^ (16 - 10) * 1.000 ou 2 ^ 6 (64) * 1.000 ou 64.000. Na realidade, é 65.536, mas se você não se importa em ficar em torno de um por cento, ele funciona razoavelmente bem para aproximações rápidas.

    
por 30.11.2017 / 14:15

Tags