C# Language Littéraux binaires


Exemple

Le préfixe 0b peut être utilisé pour représenter les littéraux binaires.

Les littéraux binaires permettent de construire des nombres à partir de zéros et de uns, ce qui facilite la visualisation des bits définis dans la représentation binaire d'un nombre. Cela peut être utile pour travailler avec des indicateurs binaires.

Les méthodes suivantes permettent de spécifier un int avec la valeur 34 (= 2 5 + 2 1 ):

// 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

Énumérations de drapeaux

Avant, la spécification de valeurs d'indicateur pour un enum ne pouvait être effectuée qu'en utilisant l'une des trois méthodes de cet exemple:

[Flags]
public enum DaysOfWeek
{
    // Previously available methods:
    //          decimal        hex       bit shifting
    Monday    =  1,    //    = 0x01    = 1 << 0
    Tuesday   =  2,    //    = 0x02    = 1 << 1
    Wednesday =  4,    //    = 0x04    = 1 << 2
    Thursday  =  8,    //    = 0x08    = 1 << 3
    Friday    = 16,    //    = 0x10    = 1 << 4
    Saturday  = 32,    //    = 0x20    = 1 << 5
    Sunday    = 64,    //    = 0x40    = 1 << 6

    Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday,
    Weekends = Saturday | Sunday
}

Avec les littéraux binaires, il est plus clair quels bits sont définis et leur utilisation ne nécessite pas de comprendre les nombres hexadécimaux et l'arithmétique binaire:

[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
}