【问题标题】:What does "<<" stand for in C#? [duplicate]“<<”在 C# 中代表什么? [复制]
【发布时间】:2011-01-09 10:47:19
【问题描述】:

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

【问题讨论】:

标签: c#


【解决方案1】:

这是一个按位移位。

Admin = 1 &lt;&lt; 1 表示二进制值左移一位。

结果是

Admin = 2

【讨论】:

    【解决方案2】:

    意思是左移,所以:

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

    左位移类似于乘以二,而右位移相当于除以二。

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

    【讨论】:

    • +1,用于注释示例!
    • 是否应该将移位、乘法或加法的决定留给 JITter?
    【解决方案3】:

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        Bitshifting 就像在 C++ 中一样

        【讨论】:

        • 我认为混淆源于std::ostream ...
        猜你喜欢
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-02
        • 1970-01-01
        • 1970-01-01
        • 2011-07-10
        相关资源
        最近更新 更多