シフト演算子には右シフト演算子と左シフト演算子の2つがあります
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟いか🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐊🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟たい🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
マックス「ぷくぷくぷく💭
#include <iostream>
using namespace std;
int main() {
int a=5<<2;
cout << a << "\n";
return 0;
}
ビルド実行結果
20
int a=5<<2;
が実行されると
まず
数値データ5が
int型の形式で32ビットのメモリに
00000000000000000000000000000101
と格納される
その後
5<<2
の実行により
int型の形式で32ビットのメモリに格納されている
00000000000000000000000000000101
の
すべての0と1が左に2個ずれた状態で
00000000000000000000000000010100
と格納し直される
101が左に2つずれたら
空白になる部分の
10の位と1の位には
0が格納されるというわけだ
そして
00000000000000000000000000010100
つまり
数値データ20
が
int型の変数aに格納されることになるので
System.out.println(a);
が実行されると
コマンドプロンプト画面に
20が表示されるというわけだ。
となるとだ・・・
5<<2;
をだな・・・」
シフト演算子<<「❔?(*´▽`*)」
<<すいすい
マックス「
5>>2;
と記述したらどうなるんだ。」
>>すいすい
シフト演算子<<の向きを
>>
に入れ替える。
右シフト演算子>>「(*´▽`*)」
マックス「なんだ?」
>>すいすい
右シフト演算子>>の向きを
<<
に入れ替える。
<<すいすい
左シフト演算子<<「あお(*´▽`*)」
<<すいすい
シフト演算子<<の向きを
>>
に入れ替える。
>>すいすい
右シフト演算子>>「(*´▽`*)」
マックス
「なるほど・・・
>>は右シフト演算子で
<<は左シフト演算子というわけか・・」
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
マックス
「向きがかわると
演算子名がかわるのか」
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
右シフト演算子>>「さあ この
広大な青い海の中で
私を使って
プログラミングしてくださいな。」
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
マックス「うぉぉ
左シフト演算子<<
から
右シフト演算子>>
に
うつりかわったぁ
ということは
プログラムの実行結果もかわってくるのか?」
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
#include <iostream>
using namespace std;
int main() {
int a=5>>2;
cout << a << "\n";
return 0;
}
ビルド実行結果
1
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
マックス「きたぁ
華麗に決めるぜ!
まずはな!
なんで
ビルド実行結果が1になるんだ!?
といいたいところだがな!
おおおおおぉぉ
俺はなぁ
根本的に
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
と格納されるんです。
次に
5>>2;
の働きにより
int型の形式で32ビットのメモリに格納されている
00000000000000000000000000000101
が
int型の形式で32ビットのメモリに
00000000000000000000000000000001
と格納し直されるんです。
すいすい>>。」
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟>>🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
マックス「ぷくぷく💭?
何がおこってるんだ
これは??」
右シフト演算子>>
「すいすい>>。
int a=5>>2;
が実行されると
まず数値データ5が
int型の形式で32ビットのメモリに
00000000000000000000000000000101
と格納されます
その後
5>>2
の実行により
int型の形式で32ビットのメモリに格納されている
00000000000000000000000000000101
の
すべての0と1が右に2個ずれた状態で
00000000000000000000000000000001
と格納し直されるんです。
このように
101が右に2つずれたら
101の10の位の0
と
1の位の1は
32ビットのメモリからはみだして
消えてしまいます。
そうなると
00000000000000000000000000000101
は
□□000000000000000000000000000001
となって
□□の部分は
空白になってしまいますが
□□の部分には
0が格納されます。
すいすい>>。
int a=16>>5;
が実行されると
まず
数値データ16が
int型の形式で32ビットのメモリに
00000000000000000000000000010000
と格納されます
そして
16>>5
が実行されると
int型の形式で32ビットのメモリに格納されていた
00000000000000000000000000010000
の
すべての0と1が右に5個ずれます。
□□□□□000000000000000000000000000
ここで
はみだした0と1はきえてしまいます。
ですので
□□の部分は
空白になってしまいますが
□□の部分には
0が格納されて
int型の形式で32ビットのメモリに
00000000000000000000000000000000
が格納されることになります
00000000000000000000000000000000
は
数値データ0を表しています
その後
int a=16>>5;
の実行により
int型の変数aには
0が格納されることになります
すいす~い>>」
マックス「な、なにぃ
ぷくぷく💭」
シフト演算子>>「そ・れ・で
int型の変数aには
00000000000000000000000000000000
つまり
数値0が
格納されているので
System.out.println(a);
が実行されると
コマンドプロンプト画面に
数値0が表示されることになるんです。」
🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟🐟
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます