Po co używać flag + maski bitów zamiast serii booleanów?
Biorąc pod uwagę przypadek, w którym mam obiekt, który może znajdować się w jednym lub więcej stanach prawda / fałsz, zawsze byłem trochę rozmyty, dlaczego programiści często używają flag + maski bitów zamiast używać kilku wartości logicznych.
To wszystko w ramach .NET. Nie jestem pewien, czy jest to najlepszy przykład, ale środowisko .NET ma następujące cechy:
public enum AnchorStyles
{
None = 0,
Top = 1,
Bottom = 2,
Left = 4,
Right = 8
}
Biorąc pod uwagę styl kotwicy, możemy użyć maski bitowej, aby dowiedzieć się, który ze stanów jest wybrany. Wydaje się jednak, że można wykonać to samo z klasą / strukturą AnchorStyle z właściwościami bool zdefiniowanymi dla każdej możliwej wartości lub tablicą indywidualnych wartości wyliczeniowych.
Oczywiście głównym powodem mojego pytania jest to, że zastanawiam się, czy powinienem stosować podobną praktykę z moim własnym kodem.
Po co więc stosować to podejście?
Mniejsze zużycie pamięci? (tak nie jestwydać się tak jakby zużywał mniej niż tablica / struktura booli)Lepsza wydajność stosu / sterty niż struktura lub tablica?Szybsze operacje porównywania? Szybsze dodawanie / usuwanie wartości?Bardziej wygodne dla programisty, który to napisał?