Escreva um algoritmo que leia 8 bits (um a um) e diga quantos 1 s e 0 s compõem o byte lido.
Passo 1
Beleza, o exercício pede pra gente criar um algoritminho que leia 8 bits, um por um, e no final diga quantos são 1s e quantos são 0s. Isso é conteúdo de lógica de programação (laços de repetição e variáveis de contagem). Para resolver, a gente vai precisar de:
- Variáveis contadoras (uma para 1s e outra para 0s).
- Um laço que repita exatamente 8 vezes.
- Uma forma de ler cada bit e testar se é 0 ou 1.
Passo 2
Antes de codar, vamos falar um pouco da teoria:
- Um bit é a menor unidade de informação em computação, só pode ser 0 ou 1.
- Um byte tem 8 bits.
- Para contar quantos bits iguais aparecem, usamos variáveis contador que começam em zero e vão sendo incrementadas conforme cada leitura.
- Um laço de repetição (
for
ouwhile
) serve pra repetir a mesma ação várias vezes sem escrever o mesmo código 8 vezes.
Passo 3
Inicialização das variáveis:
cont0 ← 0
// vai contar quantos zeros aparecemcont1 ← 0
// vai contar quantos uns aparecemi ← 1
// índice para controlar quantas leituras já fizemos
Explicando: começamos os contadores em zero porque ainda não lemos nenhum bit. A variável
i
vai de 1 a 8 no nosso laço.Passo 4
Laço de repetição e verificação:
Enquanto
Enquanto
i
for menor ou igual a 8, a gente:- Lê um valor que chamaremos de
bit
. Supondo que o usuário digite só 0 ou só 1 (sem erros). - Testa:
- Se
bit = 1
, fazcont1 ← cont1 + 1
. - Senão (ou seja,
bit = 0
), fazcont0 ← cont0 + 1
.
- Se
- Incrementa
i ← i + 1
para avançar a próxima iteração.
Na prática, em pseudocódigo com LaTeX para a parte de soma:
para i de 1 até 8 faça
leia(bit)
se bit = 1 então
cont1 ← cont1 + 1 // aqui usamos cont1 ← cont1 + 1
senão
cont0 ← cont0 + 1 // aqui usamos cont0 ← cont0 + 1
fim se
fim para
Passo 5
Depois que o laço terminar (ou seja, após 8 leituras),
cont1
terá o total de bits iguais a 1 e cont0
o total de bits iguais a 0. Só falta mostrar pro usuário:escreva("Total de 1s: ", cont1)
escreva("Total de 0s: ", cont0)
Resposta
Algoritmo completo em pseudocódigo:
Algoritmo ContaBits
// Passo 3: inicialização
cont0 ← 0
cont1 ← 0
// Passo 4: laço de 8 leituras
para i de 1 até 8 faça
leia(bit)
se bit = 1 então
cont1 ← cont1 + 1
senão
cont0 ← cont0 + 1
fim se
fim para
// Passo 5: exibe resultados
escreva("Total de 1s: ", cont1)
escreva("Total de 0s: ", cont0)
FimAlgoritmo