Page5
算術演算のお話の続きです。
その3 左シフト …2倍
全てのビットを左に一つずらします。
それぞれのビットが2倍になるので全体も2倍です。
| 2進数 |
1100 |
→ |
11000 |
| 10進数 |
12 (8+4) |
→ |
24 (16+8) |
| 2進数 |
10101 |
→ |
101010 |
10進数 |
21 (16+4+1) |
→ |
42 (32+8+2) |
例えば10進数の場合は全体を左に一つずらす、
つまり桁を一つ上げると、10倍になります。
2進数は全体を左に一つずらすと2倍になる訳です。
その4 右シフト …1/2倍
全てのビットを右に一つずらします。
右端が1の時は普通は切り捨てられます。
| 2進数 |
1100 |
→ |
110 |
| 10進数 |
12 (8+4) |
→ |
6 (4+2) |
| 2進数 |
10101 |
→ |
1010 |
10進数 |
21 (16+4+1) |
→ |
10 (8+2) |
例えば10進数で「4693」を右に一つずらす、
つまり「469」にすると 1/10倍 になります。3は切り捨て。
2進数は全体を右に一つずらすと1/2倍になる訳です。
その5 論理否定 …NOT演算子
全てのビットを反転します。
与えられた桁数によって結果が変わるので注意。
| 2進数(4桁) |
1100 |
→ |
0011 |
| 10進数 |
12 (8+4) |
→ |
3 (2+1) |
| 2進数(8桁) |
00110110 |
→ |
11001001 |
10進数 |
54 (32+16+4+2) |
→ |
201 (128+64+8+1) |
これは実際にプログラム言語などで使う場合は
非常に便利なのですが、そうでない場合は
用途が判り難いかもしれません。