<目次>
(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)