シフト演算子は、変数の各ビットを左または右に指定したビット数だけ移動する。移動して範囲からはみだしたビットは消失し、その反対側のビットは 0 で埋められる。
| << | 左シフト | 
| >> | 右シフト | 
シフト演算子の一般的な形式は次のとおり。
値 << ビット数; 値 >> ビット数;
次のプログラムは、左に 1 ビットシフトしたあと、右に 1 ビットシフトしている。元の値には戻らずに、いちばん左のビット(1)が失われているのがわかる。
#include
void show_binary(unsigned short u);
int main(void)
{
    unsigned short u;
    u = 45678;
    show_binary(u);
    u = u << 1;
    show_binary(u);
    u = u >> 1;
    show_binary(u);
    return 0;
}
void show_binary(unsigned short u)
{
    unsigned short n;
    for (n = 32768; n > 0; n = n / 2) {
        if (u & n) {
            printf("1");
        } else {
            printf("0");
        }
    }
    printf("\n");
}
takatoh@nightschool $ ./sample_11_6 1011001001101110 0110010011011100 0011001001101110