我写了以下代码。
int main() {
int i = 3;
int right = ((1 << i));
cout << right << endl;
system("pause");
}
据我所知,右边的价值不应该是6?因为二进制中的3是011,而左移的是110是6.然而我得到的输出是8.为什么会这样?
答案 0 :(得分:4)
i << n
,将i
与2 n 相乘
你得到8分 1&lt;&lt; 3 = 1 * 2 3
1 << 0 = 000...0000001 = 1
1 << 1 = 000...0000010 = 2
1 << 2 = 000...0000100 = 4
1 << 3 = 000...0001000 = 8