シフト演算による割り算シフト演算とはシフト演算とは、2進数をあらわすビット列を左または右にずらす操作のことです。10進数で考えると「770」という数字を10倍すると「7700」、1/10倍すると「77」となり、10倍は1桁増やす操作であり、1/10倍は1桁減らす操作です。スポンサーリンクこの操作は2進数でも同じであり、「100」(10進数:4)という2進数を2倍すると「1000」(10進数:8)になり、1/2倍すると「10」(10進数:2)です。このように、ビット列を左にずらすと元の値の2倍、右にずらすと元の値の1/2倍という計算結果を簡単に得ることができます。コンピュータはこのシフト演算を使い、掛け算や割り算を行っています。論理シフト論理シフトとは、符号を考慮せずに行うシフト演算のことです。左論理シフトビット列全体を左にずらす論理シフトのことを「左論理シフト」といいます。左論理シフトのイメージ例は以下の通り。48」と元の数を2の2乗倍にした値となっています。左論理シフトでは、あふれたビットは捨てます。「0」ではなく「1」があふれた場合は、オーバーフローとなり、ビット列であらわせる数の限界を超えてしまうという現象が起きます。右論理シフトビット列全体を右にずらす論理シフトのことを「右論理シフト」といいます。右論理シフトのイメージ例は以下の通り。3」と元の数を1/2の2乗倍にした値となっています。右論理シフトでは、あふれたビットが「0」ではなく「1」の場合は、割り算した結果の余りとなります。算術シフト算術シフトとは、符号を考慮して行うシフト演算のことです。1)として扱うのが特徴です。左算術シフトビット列全体を左にずらす算術シフトのことを「左算術シフト」といいます。左算術シフトのイメージ例は以下の通り。先頭は符号ビットで固定なので、シフト操作は残りの7ビットに対して行われます。左にずらすと2のn乗倍になるのは、左論理シフトと同じです。上記の例では、符号ビットが「1」(マイナスの値)である値(10進数で-28)を左に2ビットずらしています。-112」と元の数を2の2乗倍にした値となっています。左算術シフトでは、あふれたビットは捨てます。符号ビットと異なる値があふれた場合は、オーバーフローとなり、ビット列であらわせる数の限界を超えてしまうという現象が起きます。右算術シフトビット列全体を右にずらす算術シフトのことを「右算術シフト」といいます。右算術シフトのイメージ例は以下の通り。先頭は符号ビットで固定なので、シフト操作は残りの7ビットに対して行われます。右にずらすと1/2のn乗倍になるのは、左論理シフトと同じです。右算術シフトでは空いたビットには符号ビットが入ります。上記の例では、符号ビットが「1」(マイナスの値)である値(10進数で-28)を右に2ビットずらしています。-7」と元の数を1/2の2乗倍にした値となっています。あふれたビットが「0」ではなく「1」の場合は、割り算した結果の余りとなります。シフト演算を用いた掛け算と割り算スポンサーリンクシフト演算による掛け算シフト演算による掛け算は、次のように2のn乗同士の足し算に置き換えて計算を行います。2の1乗」に置き換えて計算します。12×2の3乗は「00001100」(10進数:12)を左に3ビットずらします。その結果は「01100000」(10進数:96)です。次に、12×2の1乗は「00001100」(10進数:12)を左に1ビットずらします。その結果は「0001100」(10進数:24)です。最後に「01100000」(10進数:96)と「0001100」(10進数:24)を加算すればシフト演算による掛け算は終了です。シフト演算による掛け算の結果「12×10」は「120」となりました。シフト演算による割り算シフト演算による割り算は、割られる数から割る数を何回引けるかを考えます。5」をシフト演算で計算してみます。シフト演算による割り算は、割られる数から割る数を何回引けるかを考えます。単純に引き算すると以下であり、割られる数「15」は割る数「5」で3回引けるので、答えは3であるのがわかります。0これをシフト演算で考えるとまず、10進数の「15÷5」を2進数に変換すると「1111÷101」です。20」することで、「2+1=3」と答えを求めることができます。PMありがとうございます!とてもわかりやすいです。引き続きよろしくお願いいたします。PMコメントありがとうございます。基本情報対策はこちらのカテゴリで作成予定(作成中)です。よろしければご覧いただけると嬉しいです。PM非常に面白い記事です。存在するのに、なぜシフト演算が必要なのか、実際のどういった場面で使用されているのかを紹介して欲しいです。AMコメントありがとうございます。コンピュータが理解できるのは2進数のみです。そのため、コンピュータが効率よく処理するためにシフト演算が存在しています。AMコメントありがとうございます。割り算の説明は難しいので、わかりにく表現になってしまい申し訳ございません。記事も少し修正させていただきました。シフト演算による割り算は、割られる数から割る数を何回引けるかを考えます。単純に引き算すると以下であり、3回引けるので、答えは3です。1(2の0乗)」することで、答えは3と求めることができます。AM算術シフトは符号ビット付きの演算の場合と習いました。PMコメントありがとうございます。マイナスは「2の補数」で表現するので、以下のようになります。(+28)↓すべてのビットを反転する11100011↓1を加算する11100100(-28)詳しくはこちらの記事をご覧ください。コメントをキャンセルメールアドレスが公開されることはありません。ホスト名(英:hostname)とは、ネットワークに接続されたコンピュータなどの機器を識別するための名前のことです。ネットワーク上での通信は、IPアドレスと呼ばれるインターネット上の住所を使います。IPアドレスは数字の羅列なので人間にとって分かりにくいものです。そのため、通信先をIPアドレスではなく英数字で「www.yahoo.co.jp」などと表記します。これが「ホスト名」です。ジャーナルファイルとは、システムの運用状況を、定期的かつ自動的に記録したファイルのことです。システム稼働中の変更履歴などを記録したファイルで、システム障害やデータ喪失などが発生した際に、原因究明や復旧のために使用します。ジャーナルは、ログと同義語として扱われることがありますが、ログは操作の履歴(システム稼働中に発生した事象に関する情報を記録)を記録したものです。それに対し、ジャーナルは「システム稼働中に発生した変更履歴の記録」を指すことが多いです。パスとは、パソコンの中に保存されているファイルやディレクトリ(フォルダ)の保存場所を示す経路のことです。ディレクトリという呼び方は主にUNIX系のOSで使われている言葉であり、WindowsやMacの場合は「ディレクトリ」ではなく「フォルダ」と呼ばれています。パスには「絶対パス」と「相対パス」があります。path)は、WindowsやMacで特定のフォルダの所在を表す文字列のことです。フォルダとは、コンピューター上でファイルなどを入れる「入れ物」のことです。フォルダはWindowsやMacの呼び方で、UNIX系のOSではディレクトリと呼ばれています。コンピュータ上のフォルダやファイルは、次のような階層構造で管理されています。この階層構造でフォルダがどこにあるのかを示す情報が「フォルダパス」です。path)とは、パソコンの中に保存されているディレクトリの所在を表す文字列のことです。ディレクトリとは、コンピューター上でファイルなどを入れる「入れ物」のこと。UNIX系OSの呼び方で、WindowsやMaxの場合はフォルダと呼ぶ。コンピュータ上のディレクトリやファイルは、次の図のような階層構造で管理されています。この階層構造でディレクトリがどこにあるのかを示す情報が「ディレクトリパス」です。path)とは、パソコンの中に保存されているファイルの保存場所を示す経路のことです。コンピュータ上のファイルは、次の図のように階層構造で管理されています。UNIX系OSの場合「/home/test.csv」というファイルパスは、ルートディレクトリにある「home」ディレクトリの中にある「test.csv」というファイルの場所を示すものです。