【发布时间】:2015-04-08 09:07:49
【问题描述】:
在C 我有这个enum:
enum {
STAR_NONE = 1 << 0, // 1
STAR_ONE = 1 << 1, // 2
STAR_TWO = 1 << 2, // 4
STAR_THREE = 1 << 3 // 8
};
为什么1 << 3 等于 8 而不是 6?
【问题讨论】:
-
为什么
1 << 2等于 4 而不是 3? -
你在那个位移计算器网站输入
3 << 1,而不是1 << 3。 -
将数字左移 x 位只不过是将数字乘以 (2^x),右移 x 位就是除以 (2^x)!附加信息:这就是为什么多次使用位移而不是乘法和除法来加快运算速度的原因!
-
@Swanand 这个公式让一切变得清晰一千倍,谢谢
-
@YassineHoussni:你是对的;确实如此;) 最好研究并了解事物的作用,而不是疯狂猜测。