Flag
# Flag

Em informática, uma flag (termo da língua inglesa que significa, literalmente, "bandeira") é um mecanismo lógico que funciona como semáforo: uma entidade (objecto) detém como ativa uma determinada flag se a característica associada a essa flag estiver presente. Em programação, a utilização de flags como interruptor (isto é, valores 1/0, ligado/desligado, ativo/inativo) permite optimizar as estruturas de dados, na medida em que basta apenas um bit para ativar determinada característica. Assim, com um simples byte podem-se especificar 8 características de um objecto, conhecendo, de antemão, o significado de cada bit.
Se a estrutura da flag for baseada num sistema binário, então as operações de ativação e desativação e teste serão também optimizadas (ao nível do processamento) já que apenas requerem operações simples de lógica binária.

## Exemplos

Observação: o número de bits é o mesmo número de flags (por exemplo: 8 bits representam 8 flags).
| Configuração | flag #1 | flag #2 | flag #3 | flag #4 |
| 0101 | Desabilitada | Habilitada | Desabilitada | Habilitada |
| 1101 | Habilitada | Habilitada | Desabilitada | Habilitada |

## Informações

| Bits / Flags | Bytes | Valor |
| 1 | 1/8 | 0 a 1 |
| 2 | 1/4 | 0 a 3 |
| 3 | 3/8 | 0 a 7 |
| 4 | 1/2 | 0 a 15 |
| 5 | 5/8 | 0 a 31 |
| 6 | 6/8 | 0 a 63 |
| 7 | 7/8 | 0 a 127 |
| 8 | 1 | 0 a 255 |
Também existem números de bits maiores, como, por exemplo, 32 flags (32 bits = 4 bytes) que representam de 0 a 4 294 967 295 em decimal (ou FFFFFFFF em hexadecimal)