6月2日(水)1コマ目
今日、やったこと
- 浮動小数点のテスト
- ビットシフト
今日のホワイトボード
ビットシフトとは
ビット列を左右に動かすこと。
左方向に動かすのは左シフト。 左側にできた空白ビットには0を入れる。
右方向に動かすのは右シフト。右側にできた空白ビットに何を入れるかは論理シフトと算術シフトで異なる。
左シフト
これは簡単。左に動かすことでできた空白ビットには0を入れる。
右シフト
右に動かすことでできた空白ビットに0を入れるのは論理シフト。これは簡単。
空白ビットに符号ビット(最上位ビット)と同じ値を入れるのは算術シフト。これは注意。
![]() |
| 図 右シフト(算術シフト) |
演習問題
右シフトは算術シフト?論理シフト?
右シフトを論理シフトにするか、算術シフトにするかは
- 符号なしビット列 => 論理シフト(0を入れる)
- 符号ありビット列 => 算術シフト(符号ビットと同じ値を入れる)
で分かれる。
![]() |
| 図 右シフトは論理シフト?算術シフト? |
![]() |
| 図 問1 |
![]() |
| 図 問2 |
問3
16進数のケタの数字は0~Fまで。
1ケタ分は2進数では4ビットで表すことができる。
よって、1ケタずつ4ビットに2進数にすればOK。
![]() |
| 図 問3 |
左シフトは何に使う
結論:掛け算
10進数で考えると、なんてことはない。
![]() |
| 図 左シフトは掛け算 |
右シフトは何に使う
結論:割り算
10進数で考えてみる。小学校時代の答えとあまりで考えると納得。
![]() |
| 図 右シフトは割り算 |
コンピュータはどうやって計算している?
| 計算内容 | コンピュータでは |
|---|---|
| 足し算 | 加算器 |
| 引き算 | 負の値を絶対値の2の補数にして加算器 |
| 掛け算 | 左シフト |
| 割り算 | 右シフト |
次回は
テストはしません。







コメント