C#中的"<<"代表什么?

Las*_*vik 2 c#

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

[Serializable]
[Flags]
public enum SiteRoles
{
    User = 1 << 0,
    Admin = 1 << 1,
    Helpdesk = 1 << 2
}
Run Code Online (Sandbox Code Playgroud)

ano*_*ard 8

这意味着左移位,所以:

int i = 1 << 2;

// 0000 0001 (1)
// shifted left twice
// 0000 0100 (4)
Run Code Online (Sandbox Code Playgroud)

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

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


Rvd*_*vdK 5

Bitshifting就像在C++中一样