Ao projetar um registro com várias variáveis booleanas 'flags', qual técnica reduz o uso de memória e como…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Ao projetar um registro com várias variáveis booleanas 'flags', qual técnica reduz o uso de memória e como testar, ativar e desativar a k-ésima flag?
- A) Usar uma lista de booleanos para as flags
- B) Usar uma máscara de bits (inteiro): testar com (mask & (1<<k)) != 0; ativar com mask |= (1<<k); desativar com mask &= ~(1<<k).
- C) Ativar com mask &= (1<<k)
- D) Desativar com mask |= (1<<k)
- E) Testar com (mask == (1<<k))
✅ Resposta correta: alternativa B
Resolução passo a passo
- A questão pergunta qual técnica reduz o uso de memória ao guardar várias variáveis booleanas (flags) e como testar, ativar e desativar a k-ésima flag. Pense em cada flag como um único bit dentro de um inteiro, em vez de ocupar um byte ou uma posição de lista por flag.
- Para testar o bit k, faz-se a operação E bit a bit com a máscara (1<<k), que vale 1 apenas na posição k. Se o resultado for diferente de zero, o bit está ligado: (mask & (1<<k)) != 0.
- Para ativar o bit k sem alterar os demais, usa-se OU bit a bit: mask |= (1<<k). Isso força o bit k para 1 e mantém os outros.
- Para desativar o bit k, usa-se E bit a bit com o complemento da máscara: mask &= ~(1<<k). O til inverte todos os bits, deixando zero somente na posição k.
- Resolvendo por conta própria, a alternativa B é a única que descreve a técnica de máscara de bits e as três operações corretamente, e o gabarito oficial B está correto.
- Por que as outras estão erradas: A) uma lista de booleanos é a alternativa ingênua, que usa mais memória, não a técnica de redução pedida; C) mask &= (1<<k) zera todos os bits exceto o k, destruindo as demais flags, e não ativa nada; D) mask |= (1<<k) ativa o bit em vez de desativá-lo; E) mask == (1<<k) testa se a máscara inteira é igual a apenas aquele bit, não se o bit k está ligado.
💡 Dica: Considere como as flags são representadas em binário.
Alternativa por alternativa
O aluno acredita que usar uma lista de booleanos já é uma forma de economizar memória, confundindo estrutura organizada com compactação. Não percebe que cada elemento da lista ocupa muito mais espaço que um único bit.
Por que engana: Confundir o uso de uma lista de booleanos com a técnica de máscara de bits, que é mais eficiente em termos de memória.
Uma bitmask armazena várias flags em um único inteiro, economizando espaço; operações bitwise permitem testar e alterar bits de forma eficiente.
O aluno confunde a operação de ativar com a de E bit a bit, achando que &= com (1<<k) liga o bit k. Não percebe que o E zera todos os outros bits.
O aluno inverte o significado dos operadores, associando o OU bit a bit à desativação de um bit. Na verdade o OU força o bit para 1, ou seja, ativa.
O aluno pensa que testar uma flag é comparar a máscara inteira com (1<<k) por igualdade. Isso só é verdadeiro quando todas as outras flags estão desligadas, então não testa apenas o bit k.
Raio-X da questão
variáveis booleanas
avaliacao
variáveis booleanas · operações bit a bit
Revisar como utilizar variáveis booleanas e operações bit a bit.
Confundir o uso de uma lista de booleanos com a técnica de máscara de bits, que é mais eficiente em termos de memória.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Descreva em pseudocódigo e em linguagem natural um algoritmo que receba um vetor de variáveis booleanas (dados de…
- Em um algoritmo que armazena múltiplas permissões binárias por usuário, qual escolha de variável é mais eficiente em…
- Descreva um algoritmo em etapas para codificar três respostas possíveis ("sim", "não", "talvez") em uma única variável…
- Identifique uma técnica de programação que pode ser usada para otimizar o armazenamento de dados repetidos.
- Ao declarar a variável booleana 'presente' que usa 1 bit para codificar presença (sim/não), quantos estados distintos…
- Para representar uma grande matriz de leituras de sensores em que a maioria dos valores é zero, qual técnica de…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
