<STEP1>

シフト演算のイメージ

まずは、10進数でイメージします。

左シフト演算というのは、左に桁を動かすことを言います。

「<<」 という演算子を使います。

 

23 << 1 = 230

36 << 2 = 3600

 

のようなイメージです。10進数なので、1桁動かすと10倍、2桁動かすと10^2倍(100倍)になります。

 

 

 

右シフト演算というのは、右に桁を動かすことをいいます。

「>>」演算子を使います。

 

2345 >> 1 = 234

4567 >> 2 = 45

 

のようなイメージです。左シフト演算と違って、誤差が出るのがわかりますか?

 

 

これを、2進数でやりますので、

 

00011011 << 2 = 01101100

00010101 << 3 = 10101000

 

1桁動かすと2倍、2桁動かすと2^2倍(4倍)、3桁動かすと、2^3倍(8倍)になります。

 

同様に、

10101111 >> 3 = 00010101

となり、末尾の111が捨てられます。

 

 

【演習】

①0x7B >> 2  算術の10進と論理の16進
②0xC8 | 0x49
③0xA3 ^ 0x81
④0xD6 & 0xBA
⑤0x9C << 3
⑥0x47 >> 2
⑦0xB8 << 2
⑧0xB8 >> 3

①0x7B >> 2
01111011
00011110
A.0x1E,30
②0xC8 | 0x49
11001000
01001001
11001001
A.0xC9
③0xA3 ^ 0x81
10100011
01000001
11100010
A.0xE2
④0xD6 & 0xBA
11010110
10111010
10010010
A.0x92
⑤0x9C << 3
10011100
11100000(算・論理)
00011111
00100000
A.0xE0,-32
⑥0x47 >> 2
01000111
00010001
A.0x11,17
⑦0xB8 << 2
10111000
11100000
A.0xE0, -32
⑧0xB8 >> 3
10111000
11110111
00001000
00001001
00010111
A.0x17,-9