例子
#include <stdio.h>
#include <string.h>
// 左移运算符
int main()
{
for (int i = 0; i != 10 ; ++i) {
printf("1 << %d: %d
", i, 1 << i);
}
return 0;
}
/*
输出是
1 << 0: 1 即2^0 二进制 1 (把 1 左移了n位)
1 << 1: 2 即2^1 二进制 10 (把 1 左移了1位)
1 << 2: 4 即2^2 二进制 100 (把 1 左移了2位)
1 << 3: 8
1 << 4: 16
1 << 5: 32
1 << 6: 64
1 << 7: 128
1 << 8: 256
1 << 9: 512
所以 1 << n 是 2^n 二进制 1后面跟着n个0 (把 1 左移了n位)
用二进制数表达状态。
1位二进制只可以表达 2 种状态 0 与 1
而 2位二进制就可以表达 2 * 2 = 4 种状态 2 ^ 2
3位可以表达 2 * 2 * 2 = 8种状态 2 ^ 3
*/
参考
[1] i<<4在C++中是什么意思_百度知道