🔢

シフト演算の基礎と応用

Feb 27, 2025

シフト演算の基礎理論

概要

  • 第4回基礎理論コース
  • 前回は二進数の足し算引き算を学習
  • 今回は掛け算割り算に関するシフト演算を学ぶ

シフト演算とは

  • シフト演算はビット列を左右にずらす操作
  • 例:実心数73.6を10倍、1/10倍する場合
    • 10倍:736
    • 1/10倍:7.36
  • 基本数は10進数の場合は10、2進数の場合は2
  • 左にずらすと2倍、右にずらすと1/2倍

シフトの公式

  • 左にn個ずれると値は2^n倍
  • 右にn個ずれると値は2^-n倍

シフト演算の種類

1. 論理シフト

  • 符号を考慮せずにシフト操作

  • 左シフト(掛け算)

    • 例:8ビットで00101010(42)を2ビット左シフト
      • 42を4倍して168
    • 結果:10101000(168)
  • 右シフト(割り算)

    • 例:01001000(72)を2ビット右シフト
      • 72を4で割って18
    • 結果:00010010(18)
  • オーバーフローの概念

    • 論理シフトの場合、1がはみ出たらオーバーフロー
    • 8ビットの範囲を超えた場合、正しい値が表現できない

2. 算術シフト

  • 符号を考慮してシフト操作

  • 左シフト

    • 符号ビットを無視し、残りのビットをシフト
    • 例:11101000(-24)を左に2ビットシフト
      • 結果:符号ビット固定でオーバーフローを考慮
  • 右シフト

    • 符号ビットを詰める
    • 例:-24を右に2ビットシフト
      • 結果:-6

結論

  • 論理シフトと算術シフトの違い
    • 論理シフトは空白スペースに0を詰め、はみ出た部分はオーバーフロー
    • 算術シフトは符号ビットを詰め、異なる数値がはみ出た場合にオーバーフロー

演算方法の特徴

  • 論理シフト左:
    • 空きに0を詰める、1がはみ出るとオーバーフロー
  • 算術シフト左:
    • 同様だが、異なる数値のはみ出しに注意
  • 論理シフト右:
    • 空きに0、はみ出た部分は余り
  • 算術シフト右:
    • 空きに符号ビット、はみ出た部分は余り

参考

  • 2のn乗以外の数値の計算方法
    • 例:7倍の計算
      • 4 + 2 + 1で分配法則を使用

まとめ

  • 本日の講義は以上
  • 今後の学習のためチャンネル登録を推奨
  • 試験合格に向けて共に勉強を進めよう