enum
{
kFlag_FPS = 1 << 0,
kFlag_Help = 1 << 1,
kFlag_RedBlue3D = 1 << 2,
}
我试图了解这段代码是什么我不太清楚:
1 << 0
方法?
任何帮助是极大的赞赏!
原文由 CodeDoctorJL 发布,翻译遵循 CC BY-SA 4.0 许可协议
enum
{
kFlag_FPS = 1 << 0,
kFlag_Help = 1 << 1,
kFlag_RedBlue3D = 1 << 2,
}
我试图了解这段代码是什么我不太清楚:
1 << 0
方法?
任何帮助是极大的赞赏!
原文由 CodeDoctorJL 发布,翻译遵循 CC BY-SA 4.0 许可协议
我自己正在寻找这个问题的答案,但我对原因更加好奇。这是一个正确解释原因的 链接。为什么不直接使用以整数为值的标准枚举呢?显然,对枚举使用位运算符非常适合定义标志。
// Powers of two
[Flags] public enum AttackType {
// Decimal // Binary
None = 0, // 000000
Melee = 1, // 000001
Fire = 2, // 000010
Ice = 4, // 000100
Poison = 8 // 001000
}
// Label Binary Decimal
// Melee: 000001 = 1
// Fire: 000010 = 2
// Melee | Fire: 000011 = 3
使用上述内容,您可以组合多个标志/枚举并具有唯一值,而无需在实际枚举类中定义它。使用此 链接 了解更多信息。
原文由 Grace Em 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
来自 MSDN - 移位运算符:>> 和 <<
这意味着用户正在获取
1
的位值,并根据正确的数字将位向左移动。这意味着在这种情况下,它们的值在二进制中看起来像这样。
第一个班次不是必需的,但它看起来与其他班次更一致。