一个FLAG #04# 左移运算符

例子

#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++中是什么意思_百度知道

原文地址:https://www.cnblogs.com/xkxf/p/12531933.html