Bitwise Enumeration

A bitwise enum is an enum type that uses bitwise operations to combine multiple enum values into a single value.
Each enum value is assigned a unique bit flag, represented by a power of 2.
By assigning these flags, we can represent multiple enum values by combining or masking them using bitwise operators.


Defining Bitwise Enums

To define a bitwise enum, we need to decorate it with the [Flags] attribute, indicating that the enum values can be combined using bitwise operations. Here's an example,
The DaysOfWeek enum has every day of the week assigned a unique power of 2.
The None value is assigned 0, indicating no days are selected.

[Flags] enum DaysOfWeek { 
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    Saturday = 32,
    Sunday = 64
};

Combining Bitwise Enums

To combine the Monday, Wednesday, and Friday enum values we use the bitwise OR (|) operator.

DaysOfWeek selectedDays = DaysOfWeek.Monday | DaysOfWeek.Wednesday | DaysOfWeek.Friday 

Checking for Enum Values

To check if the Monday value is set in the selectedDays variable we use the bitwise AND (&) operator.

if ((selectedDays & DaysOfWeek.Monday) != 0) { 
  Console.WriteLine("Monday is selected.");
}

Removing Enum Values

To remove the Wednesday specific enum value from the set in the selectedDays variable, we use the bitwise XOR (^) operator.

selectedDays ^= DaysOfWeek.Wednesday; 

© 2024 Better Solutions Limited. All Rights Reserved. © 2024 Better Solutions Limited TopPrevNext