例:シフト演算は10進数で理解しようとすると2倍、1/2倍しているだけのように見えるので すが、2進数で表すと視覚的に面白い物があります。
10進数 2進数
1 1
2 10
3 11
:
:
15 1111
16 10000
シフト演算の例:
10進数 2進数の場合
5 << 1 == 10 101 << 1 == 1010
13 << 2 == 52 1101 << 2 == 110100
5 >> 1 == 2 101 >> 1 == 10
13 >> 2 == 3 1101 >> 2 == 11
int main(int argc, char* argv[])なぜこういうことを起こす必要があるのか。それは来週までのお楽しみ。
{
unsigned int a = 0xf0ffffff; /* 処理系によって桁が異なる。 sizeof(int)=2byteの時は 0xf0ff で行う*/
int b = (int)(b);printf("a = %08x , b = %08x\n",a,b);
a >>= 4;
b >>= 4;
printf("a = %08x , b = %08x\n",a,b);
a <<= 8;
b <<= 8;
printf("a = %08x , b = %08x\n",a,b);
return 0;
}