2010-01-26 50 views
2

< <在这段代码中做了什么?“<<”在C#中代表什么?

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

http://msdn.microsoft.com/en-us/library/6a71f45d%28VS.71%29.aspx – UpTheCreek 2010-01-26 09:10:07

+0

这里:HTTP://计算器。 com/questions/2134204/multiple-ways-to-define-c-enums-with-flags-attribute/ – 2010-01-26 09:12:55

回答

5

Bitshifting就像在C++

+0

我认为混淆源于'std :: ostream' ... – 2010-01-26 09:09:44

7

这意味着位位移左侧,所以:

int i = 1 << 2; 

// 0000 0001 (1) 
// shifted left twice 
// 0000 0100 (4) 

左位位移类似于乘以2,和右位位移作为由两个分频。因为它们所传达的语义更好地与位掩码工作时,他们是(在x86上至少),比乘

+0

+1,对于评论示例! – 2010-01-26 10:28:09

+0

是否应该将移位,乘法或加法决定留给JITter? – Joey 2011-12-22 10:18:16

-2

这是一个位转变更快

Bitshifts是有用的。

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

结果是

Admin = 2