シフト演算
#include <stdio.h>
void main()
{
int b = 1;
printf( "%d %d\n", b * 2, b << 1 );
printf( "%d %d\n", b * 4, b << 2 );
printf( "%d %d\n", b * 8, b << 3 );
printf( "%d %d\n", b * 16, b << 4 );
int a = 16;
printf( "%d %d\n", a / 2, a >> 1 );
printf( "%d %d\n", a / 4, a >> 2 );
printf( "%d %d\n", a / 8, a >> 3 );
printf( "%d %d\n", a / 16, a >> 4 );
}
実行結果
2 2
4 4
8 8
16 16
8 8
4 4
2 2
1 1
シフト対象整数が正の時、
i * 2n と i << n は同じ結果になる。
i / 2n と i >> n は同じ結果になる。
左に1ビットシフトするごとに値は2倍になる
右に1ビットシフトするごとに値は1/2倍になる
Comments