<目次>
(1) C++における「>>」の意味について
(1-1) 概要
(1-2) サンプルプログラム
(1-3) どんな時に使われる?⇒データ圧縮
(1-4) 備考
(1) C++における「>>」の意味について
(1-1) 概要
(構文)
[変数] << [シフトするビット数]
(例)
//# 10進数の8 = 2進数の00001000 int before = 8; bitset<8> before_bin(before); cout << before << " = " << before_bin << endl; //# 左に3ビットシフト //# 2進数の01000000 = 10進数の64 int after = before << 3; bitset<8> after_bin(after); cout << after << " = " << after_bin << endl;
(図111)

(1-2) サンプルプログラム
(サンプルプログラム)
#include <iostream>
#include <bitset>
using namespace std;
int main()
{
//# tの値が350とします。
int t = 350;
bitset<8> t_0(t);
cout << t << " = " << t_0 << endl;
//# 10進数の「350」は、16進数だと「0x15E」です。
//# 10進数の「350」は、2進数では「0001 0101 1110」です。
//# この350を右に5ビット分、シフトさせます。
int hoge = t >> 5;
//# 具体的には次のように1桁ずつ右にシフトさせていきます。
//# t >> 0は初期状態で、そこから5桁右にズラします。
//# t >> 0 = 0001 0101 1110
//# t >> 1 = 0000 1010 1111
//# t >> 2 = 0000 0101 0111
//# t >> 3 = 0000 0010 1011
//# t >> 4 = 0000 0001 0101
//# t >> 5 = 0000 0000 1010
//# 「0000 0000 1010」の値は16進数では「A」、10進数では「10」となります。
//# よって、hoge = t >> 5 = 10 となります。
bitset<8> t_5(hoge);
cout << hoge << " = " << t_5 << endl;
}
(図121)
