C语言中的 “>>”与“<<”

1.

int x = 16; printf("%d\n", x >> 1);

先将x转成二进制 10000, 不读最后一位, 输出 1000, 即为8;

2.

int x = 16; printf("%d\n", x << 1);
先将x转成二进制 10000, 往最后再读取一位(0, 或根据是否已经有移位), 输出 100000, 即为32;

以上不包含溢出情况, 且只有能用在int、short int、long int,可能有错漏。

#include <stdio.h>

int main()
{
    int x = 16;
    printf("%d\n", x >> 3);
    printf("%d\n", x >> 2);
    printf("%d\n", x >> 1);

    printf("%d\n", x << 3);
    printf("%d\n", x << 2);
    printf("%d\n", x << 1);
}

结果为

2
4
8
128
64
32

相关推荐