LoginSignup
0
0

More than 3 years have passed since last update.

二進数での剰余計算

Last updated at Posted at 2020-02-11

メモリーやディスクには1Bit単位では記録できない1Byte(8Bit)が必要

シフト演算

コンピュータは剰余計算を行うためにシフト演算というものを行なっている。
シフト演算には左シフト(掛け算)と右シフト(割り算)がある

左シフト(掛け算)

桁を左に移動する(下の例では2桁)
桁から溢れた分はなくなり、新しくできた部分に部分に0を入れる

0 0 1 0 1 0 1 1
↑LOST ↑LOST ↓NEW ↓NEW
1 0 1 0 1 1 0 0

左シフト2だった場合は4倍になる(47→188になっているのがわかる)

例えば5倍にしたいなら[元の数値の左シフト2(4倍)]と[元の数値(1倍)]をたす

右シフト(割り算)

論理右シフトと算術右シフトで対応が異なる

論理シフト

シフト対象が正の数である場合行う

桁を右に移動する(下の例では2桁)
桁から溢れた分はなくなり、新しくできた部分に部分に0を入れる

0 0 1 0 1 0 0 0
↓NEW ↓NEW ↑LOST ↑LOST
0 0 0 0 1 0 1 0

(72→18)

算術シフト

シフト対象が負の数である場合行う

桁を右に移動する(下の例では2桁)
桁から溢れた分はなくなり、新しくできた部分に部分に1を入れる

1 1 1 1 0 1 0 0
↓NEW ↓NEW ↑LOST ↑LOST
1 1 1 1 1 1 0 1

(-12→-3)

マイナスの値の表現については補数で検索

参考

プログラムはなぜ動くのか(矢沢久雄)日経BP社

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0