Em um algoritmo que armazena múltiplas permissões binárias por usuário, qual escolha de variável é mais…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Compreender e utilizar diferentes formas de armazenar, manipular, compactar e recuperar arquivos, documentos e metadados.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Em um algoritmo que armazena múltiplas permissões binárias por usuário, qual escolha de variável é mais eficiente em memória: um vetor de booleanos ou um inteiro que usa bitmask?
- A) Um vetor de strings, já que é mais fácil entender para os usuários.
- B) Um vetor de inteiros, já que pode armazenar mais permissões de uma vez.
- C) Uma variável inteira que usa bitmask.
- D) Um caractere, pois permite armazenar até 256 permissões diferentes.
- E) Um vetor de booleanos, pois é mais simples para o programador.
✅ Resposta correta: alternativa C
Resolução passo a passo
- Cada permissão é binária (concedida ou negada), ou seja, basta 1 bit de informação para representar cada uma. A pergunta é qual estrutura gasta menos memória para guardar várias dessas informações. Passo 2: Um vetor de booleanos normalmente ocupa pelo menos 1 byte (8 bits) por elemento em muitas linguagens, desperdiçando 7 bits por permissão. Passo 3: Um inteiro usando bitmask guarda cada permissão em um único bit. Um inteiro de 32 bits comporta 32 permissões, e operações como AND, OR e deslocamentos permitem testar, conceder e revogar cada uma. Passo 4: Comparando com 32 permissões, o bitmask ocupa 4 bytes, enquanto um vetor de booleanos com 1 byte por elemento ocuparia 32 bytes. Passo 5: Portanto a alternativa C está correta, e o gabarito oficial coincide com essa conclusão. Passo 6: Por que as outras estão erradas: A) um vetor de strings é o formato que mais consome memória e a facilidade de leitura para o usuário não tem relação com eficiência de memória. B) um vetor de inteiros gasta pelo menos 4 bytes por elemento, então armazenar mais valores por elemento não reduz o uso total de memória. D) um caractere ocupa 1 byte e tem 256 combinações de valor, mas isso não equivale a 256 permissões independentes; com bitmask, esse byte guardaria apenas 8 flags. E) um vetor de booleanos é simples de programar, mas essa simplicidade tem custo maior de memória do que o bitmask. Observação: em algumas linguagens, como C++ com vector de bool, os booleanos já são empacotados em bits, então a diferença depende da implementação, mas a resposta geral do enunciado é o bitmask.
💡 Dica: Considere a eficiência de armazenamento de cada opção.
Alternativa por alternativa
Confunde eficiência de memória com facilidade de compreensão para os usuários, como se a legibilidade determinasse o consumo de memória. Também supõe que strings seriam uma forma compacta de guardar permissões.
Acredita que poder armazenar mais permissões em uma única variável significa usar menos memória, ignorando que cada inteiro ocupa vários bytes mesmo quando usado para um único bit.
Por que engana: Escolher um vetor de booleanos por achar que é mais simples, sem considerar a eficiência de memória.
Bitmask usa cada bit do inteiro para representar uma permissão, reduzindo significativamente o uso de memória e permitindo operações bitwise (AND, OR, XOR) rápidas; vetores de booleanos têm overhead por elemento.
Confunde o número de valores distintos que um caractere de 1 byte pode assumir (256) com o número de permissões independentes que podem ser marcadas, que é o que importa aqui.
Acha que a simplicidade de uso para o programador implica menor uso de memória, sem perceber que cada booleano costuma ocupar 1 byte, enquanto o bitmask empacota várias permissões em bits.
Raio-X da questão
permissões binárias
avaliacao
permissões binárias · bitmask
Revisar conceitos de estruturas de dados e eficiência de memória.
Escolher um vetor de booleanos por achar que é mais simples, sem considerar a eficiência de memória.
ciencia_tecnologia
tomada_decisao
abstrato
Questões parecidas com resolução
- Ao projetar um registro com várias variáveis booleanas 'flags', qual técnica reduz o uso de memória e como testar…
- Descreva em pseudocódigo e em linguagem natural um algoritmo que receba um vetor de variáveis booleanas (dados de…
- Em um algoritmo, qual tipo de dado é mais adequado para a variável 'autenticacao_2fa' que indica se o usuário ativou…
- Projete um algoritmo em pseudocódigo e justifique a escolha de tipos de dado para representar a frequência…
- Em pseudocódigo, ao registrar se uma senha atende critérios (comprimento mínimo e conjunto de caracteres), qual tipo de…
- Em pseudocódigo, ao armazenar uma senha como dado em uma variável para autenticação, qual tipo de dado é mais apropriado…
Todas as questões de Armazenamento e Transmissão de dados - Gestão de dados
🔎 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
