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 }