The 0b preﬁx can be used to represent Binary literals.
Binary literals allow constructing numbers from zeroes and ones, which makes seeing which bits are set in the
binary representation of a number much easier. This can be useful for working with binary ﬂags.
The following are equivalent ways of specifying an int with value 34 (=25 + 21):
// Using a binary literal:
// bits: 76543210
int a1 = 0b00100010; // binary: explicitly specify bits
// Existing methods:
int a2 = 0x22; // hexadecimal: every digit corresponds to 4 bits
int a3 = 34; // decimal: hard to visualise which bits are set
int a4 = (1 << 5) | (1 << 1); // bitwise arithmetic: combining non-zero bits
Flags enumerations
Before, specifying ﬂag values for an enum could only be done using one of the three methods in this example:
[Flags]
public enum DaysOfWeek
{
// Previously available methods:
// decimal hex
bit shifting
Monday = 1, // = 0x01 = 1 << 0
Tuesday = 2, // = 0x02 = 1 << 1
// = 0x04 = 1 << 2
Wednesday = 4,
// = 0x08 = 1 << 3
Thursday = 8,
Friday = 16, // = 0x10 = 1 << 4
// = 0x20 = 1 << 5
Saturday = 32,
Sunday = 64, // = 0x40 = 1 << 6
Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday,
Weekends = Saturday | Sunday
}
With binary literals it is more obvious which bits are set, and using them does not require understanding
hexadecimal numbers and bitwise arithmetic:
[Flags]
public enum DaysOfWeek
{
Monday = 0b00000001,
Tuesday = 0b00000010,
Wednesday = 0b00000100,
Thursday = 0b00001000,
Friday = 0b00010000,
Saturday = 0b00100000,
Sunday = 0b01000000,
Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday,
Weekends = Saturday | Sunday
}

## Comment Form