C#中的“<<”代表什么?

<<在这段代码中做了什么?

[Serializable] [Flags] public enum SiteRoles { User = 1 << 0, Admin = 1 << 1, Helpdesk = 1 << 2 } 

按位移位 。

这意味着左移位,所以:

 int i = 1 << 2; // 0000 0001 (1) // shifted left twice // 0000 0100 (4) 

左位移类似于乘以2,右位移作为除以2。

Bitshifts是有用的,因为它们在使用位掩码时更好地传达语义,并且它们(至少在x86上)比乘法更快

Bitshifting就像在C ++中一样

按位移位

这是一个按位移位。

Admin = 1 << 1表示一个二进制值向左移动一位。

结果是

Admin = 2