C#二进制文字
示例
该0B前缀,可以用来表示二进制文字。
二进制文字允许从零和一构造数字,这使得查看数字的二进制表示形式中设置的位变得更加容易。这对于使用二进制标志很有用。
以下是指定intwith值34(=25+21)的等效方法:
//使用二进制文字: //位数:76543210 int a1 = 0b00100010; //二进制:明确指定位 //现有方法: int a2 = 0x22; //十六进制:每个数字对应于4位 int a3 = 34; //十进制:很难看到设置了哪些位 int a4 = (1 << 5) | (1 << 1); //按位算术:组合非零位
标志枚举
以前,enum只能使用以下示例中的三种方法之一来指定an的标志值:
[Flags]
public enum DaysOfWeek
{
//先前可用的方法:
//十进制十六进制位移
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
}使用二进制文字,更明显的是设置了哪些位,使用它们不需要了解十六进制数字和按位算术:
[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
}