シフト演算子はお魚ではありません

🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟いか🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐊🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟たい🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐊🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


マックス「俺はな・・


>>は魚だとおもっていたんだよなぁ。」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟

シフト演算子>>「さあ この


広大な青い海の中で


私を使って


プログラミングしてくださいな。」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


マックス「うぉぉ 燃えてきたぜ。


お前が


シフト演算子だっだとはな」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


#include <iostream>


using namespace std;


int main() {


int a=5<<2;

cout << a << "\n";


return 0;

}


コンパイル結果

20

🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


マックス「華麗に決めるぜ!


まずはな!


なんで


コンパイル結果が20になるんだ!?


といいたいところだが


俺はなぁ


根本的に


int a=5<<2;


の意味がわからん!


ぷくぷくぷく💭」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


シフト演算子<<


「そう


int a=5<<2;


は  


変数aを


       5<<2


で初期化してるんです。」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟<<🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


マックス「ぷくぷく💭


int a=5;

int a=8;


のように


変数aを5や8で初期化したように


変数aを5<<2


で初期化したってことか


ぷくぷく💭」


シフト演算子<<


「そう わたしは演算子で


数値データ5に作用しているんです


5<<2


の<<は


5*2

5+2



乗算演算子*

加算演算子+


と同じ


演算子なんだ。


だから


int a=5<<2;


int a=5*2;

int a=5+2;


のように


変数aを初期化することと一緒かな?」


マックス「なるほど・・・


そうなのか


🐟じゃないんだな

🐠じゃないんだな


ナイス説明だ


がっちり理解したぜぇ。


うぉぉ


ならば・・・


そうだ


これだ!!


だが


5<<2


の意味がわからぬぅ!


なんで5に<<がくっついているんだ」


シフト演算子<<「


それは次のプログラムをみれば


わかるようになるなる。


#include <iostream>


using namespace std;


int main() {


int a=5;

cout << a << "\n";


return 0;

}


コンパイル結果

5


マックス「まんま


普通に変数aに格納された数値5



コンパイル結果に表示された!


やるなぁ


ぷくぷく💭」


シフト演算子<<「すごい?


そう思うでしょう?


この青い海の中でおこる


コンピュータプログラムの神秘です。


int a=5;


が実行されると


まず


数値データ5は


int型の形式で32ビットのメモリに


00000000000000000000000000000101


と格納されます


それから


int型の変数aに数値データ5が代入されます


ところが


int a=5<<2;


が実行されると


        まず最初に(⋈◍>◡<◍)。✧♡


int型の形式で32ビットのメモリに


数値データ5が


00000000000000000000000000000101


と格納されます


次に


5<<2


の働きにより


メモリに格納された


00000000000000000000000000000101



左に2つずれて


int型の形式で32ビットのメモリに


00000000000000000000000000010100


と格納されるんです。


すいすい。」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟<<🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


🐡 🐡 🐡~~~


マックス「ぷくぷく💭?


何がおこってるんだ


これは??


こ、これが


これがぁぁ


          青い奇跡  


なのかぁ」


シフト演算子<<


「すいすい。


もう一度繰り返すと


int a=5<<2;


が実行されると


まず


数値データ5が


int型の形式で32ビットのメモリに


00000000000000000000000000000101


と格納されます


そして


5<<2


が実行されると


int型の形式で32ビットのメモリに格納されている


00000000000000000000000000000101


のすべての0と1が左に2個ずれた状態で


00000000000000000000000000010100


と格納し直されます


101が左に2つずれたら


空白になる部分の


10の位と1の位には


0が格納されるんです


すいすい。


int a=16<<5;


が実行されると


まず


数値データ16が


int型の形式で32ビットのメモリに


00000000000000000000000000010000


と格納されますが


16<<5


の働きにより


int型の形式で32ビットのメモリに格納されている


00000000000000000000000000010000


のすべての0と1が左に5個ずれた状態で


00000000000000000000001000000000


と格納しなおされるんです。


10000が左に5つずれたら


空白になる部分の


1万の位と千の位と100の位と10の位と1の位には


0が格納されるんですよ。


すいす~い」


マックス「な、なにぃ


ぷくぷく💭」


シフト演算子<<「そ・れ・で


5<<2


が実行されると


int型の形式でメモリに


00000000000000000000000000010100


が格納されることになります


00000000000000000000000000010100



数値データ20をあらわしています。



そして


int a=5<<2;


の実行により


int型の変数aに5<<2


が代入されると


int型の変数aに20が代入される


つまり


変数aの管理しているメモリに


00000000000000000000000000010100


が格納されることになります



すいすい。


ということで


int型の変数aには


00000000000000000000000000010100


つまり


数値データ20が


格納されていることになるので


cout << a << "\n";


が実行されると


数値20がコマンドプロンプト画面に表示されることになるです。」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟



マックス「ぷくぷく💭


ナイス説明!


01ずらしか・・・


そのようなことができるとは・・・


シフト演算子 


まさに


この青い海のように神秘だな。


ぷくぷく💭」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


マックス「はっ・・・


 それでこの理想郷の青い海の中を泳いでいたんだな。」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


シフト演算子「この青い海で泳いでいるから


他のみんなもこの青い海に泳ぎにつれてきてね。」

🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟


マックス「おう そうだな(´▽`*)/」


🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟

🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟










  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る