C++ビット単位演算子
ビット演算とは、バイナリによる演算です.プログラムでは、バイナリビットの問題を処理する必要があることが多い.C/C++言語には6ビット演算子が用意されています.これらの演算子は、整数オペランド、すなわち、記号付きまたは記号なしのchar、short、int、longタイプにのみ使用できます.実際の応用では、符号付き操作数は異なる機械結果によって異なる可能性があるため、unsigned整数操作数を推奨する.
C/C++ビット操作演算子
オペレータ
機能
使用法
~
位求反
~expr
<<
左に移動
expr1 << expr2
>>
右に移動
expr1 >> expr2
&
ビットと
expr1 & expr2
^
位異或
expr1 ^ expr2
|
ビットまたは
expr1 | expr2
0&0=0;
0&1=0;
1&0=0;
1&1=1;
つまり
&
0
1
0
0
0
1
0
1
あと2つ
|
0
1
0
0
1
1
1
1
^
0
1
0
0
1
1
1
0
<<左シフト操作は、シフト毎に2を乗じることに相当し、例えば13<<3==13*(2の3次方)
>>右シフト操作は、2で割ることに相当します.
左に移動しても右に移動しても自分の数値は変わりません
C/C++ビット操作演算子
オペレータ
機能
使用法
~
位求反
~expr
<<
左に移動
expr1 << expr2
>>
右に移動
expr1 >> expr2
&
ビットと
expr1 & expr2
^
位異或
expr1 ^ expr2
|
ビットまたは
expr1 | expr2
0&0=0;
0&1=0;
1&0=0;
1&1=1;
つまり
&
0
1
0
0
0
1
0
1
あと2つ
|
0
1
0
0
1
1
1
1
^
0
1
0
0
1
1
1
0
<<左シフト操作は、シフト毎に2を乗じることに相当し、例えば13<<3==13*(2の3次方)
>>右シフト操作は、2で割ることに相当します.
左に移動しても右に移動しても自分の数値は変わりません
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int a = 43;
cout << (a >> 2) << endl;//
cout << a << endl;
//a>>2 a/(2 2 )==a/4==43/4
/*
10
43
*/
return 0;
}