【发布时间】:2011-01-09 10:47:19
【问题描述】:
[Serializable]
[Flags]
public enum SiteRoles
{
User = 1 << 0,
Admin = 1 << 1,
Helpdesk = 1 << 2
}
【问题讨论】:
标签: c#
[Serializable]
[Flags]
public enum SiteRoles
{
User = 1 << 0,
Admin = 1 << 1,
Helpdesk = 1 << 2
}
【问题讨论】:
标签: c#
这是一个按位移位。
Admin = 1 << 1 表示二进制值左移一位。
结果是
Admin = 2
【讨论】:
意思是左移,所以:
int i = 1 << 2;
// 0000 0001 (1)
// shifted left twice
// 0000 0100 (4)
左位移类似于乘以二,而右位移相当于除以二。
位移位很有用,因为它们在使用位掩码时可以更好地传达语义,并且它们(至少在 x86 上)比乘法更快
【讨论】:
【讨论】:
【讨论】:
Bitshifting 就像在 C++ 中一样
【讨论】:
std::ostream ...