Um circuito fotodetector é usado para gerar um pulso a cada vez que um cliente entra em um determinado estabelecimento. Os pulsos são aplicados em um contador de 8 bits. O contador é usado para determinar quantos clientes entraram na loja. Depois de fechar a loja, o proprietário observa a contagem
. Ele sabe que esse valor não está correto, porque entraram muito mais que nove pessoas na loja. Considerando que o circuito do contador funciona corretamente, qual seria o motivo da discrepância?
Passo 1
O enunciado dá as seguintes informações e faz esta pergunta:
- Informação: um circuito fotodetector gera um pulso a cada cliente que entra. Esses pulsos alimentam um contador de 8 bits.
- Informação observada: após o fechamento o proprietário vê a contagem
. - Informação adicional do enunciado: o proprietário sabe que entraram muito mais que nove pessoas.
- Pergunta: considerando que o circuito do contador funciona corretamente, qual é o motivo da discrepância entre o número real de clientes e o valor
observado?
Passo 2
Vamos entender o que significa “contador de 8 bits” de forma bem prática e passo a passo.
Um contador de 8 bits armazena um valor binário com 8 dígitos (bits). Cada bit representa uma potência de dois. Se chamarmos os bits de (onde
é o bit mais significativo), o valor decimal representado é
Um contador de 8 bits armazena um valor binário com 8 dígitos (bits). Cada bit representa uma potência de dois. Se chamarmos os bits de
O maior valor possível ocorre quando todos os bits valem
, isto é
. Calculando em decimal isso dá
Portanto um contador de 8 bits pode representar valores de
até
.
Passo 3
Agora o conceito importante: o que acontece quando chegam mais pulsos do que o contador pode armazenar?
Quando o contador recebe um pulso e já está no valor máximo , o próximo pulso o faz “rodar” para
e continuar contando a partir daí. Esse comportamento é chamado de overflow ou rolamento (rollover). Em linguagem matemática isso significa que o contador registra o número total de pulsos reduzido módulo
(porque
). Ou seja, o valor exibido pelo contador é o resto da divisão do número total de pulsos por
.
Quando o contador recebe um pulso e já está no valor máximo
Passo 4
Aplicando isso ao caso concreto: o contador mostra
. Então o que foi realmente mostrado é o número total de pulsos modulo
. Escrevemos o número real de clientes
como
para algum inteiro
. Cada valor de
corresponde a um número de vezes que o contador completou um ciclo de
a
e voltou a
. Exemplos para fixar a ideia:
- Se
então (apenas 9 pessoas). - Se
então pessoas — o contador rolou uma vez e terminou em . - Se
então pessoas — rolou duas vezes, e assim por diante.
Como o proprietário sabe que entraram muito mais quepessoas, o caso mais simples é que , ou seja, o contador fez pelo menos um overflow.
Passo 5
Conclusão didática e rápida dica prática: o motivo da discrepância é que o contador de 8 bits “rolou” (overflow) porque o número de clientes excedeu
. O contador mostrou apenas o restante da divisão por
. Para evitar esse problema na prova ou na prática, pode-se usar um contador com mais bits (ex.: 16 bits), encadear contadores para ampliar capacidade, ou ler/resetar o contador periodicamente para não perder contagens por overflow. Você tá indo bem — esse tipo de raciocínio modular aparece muito em provas e é só lembrar que contadores digitais contam "modulo
".
Resposta
O contador de 8 bits sofreu overflow (rolamento): ele conta modulo
, logo o número real de clientes é
para algum inteiro
(por exemplo,
se
).