2010-01-26 84 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