C/C++ の左シフト演算子と右シフト演算子
左シフト( < <)
これは 2 つの数値を受け取り、最初のオペランドのビットを左シフトし、2 番目のオペランドでシフトする桁数を決定する二項演算子です。つまり、整数を左シフトすると、 ある 整数で b 「」と表記される (a < 乗算と同等です ある と 2^b (2 の b 乗)。
構文:
a < < b;
- a: 第 1 オペランド b: 第 2 オペランド
例: 持っていきましょう a=5 ;それは 101 バイナリ形式で。さて、もし a は 2 だけ左シフトされます つまり a=a < <2 それから ある となります a=a*(2^2) 。したがって、 a=5*(2^2)=20 次のように書くことができます 10100。
C
// C Program to demonstrate use> // of left shift operator> #include> // Driver code> int> main()> {> > // a = 5(00000101), b = 9(00001001)> > unsigned> char> a = 5, b = 9;> > // The result is 00001010> > printf> (> 'a < <1 = %d
'> , (a < < 1));> > // The result is 00010010> > printf> (> 'b < <1 = %d'> , (b < < 1));> > return> 0;> }> |
C++
// C++ Program to demonstrate use> // of left shift operator> #include> using> namespace> std;> // Driver code> int> main()> {> > // a = 5(00000101), b = 9(00001001)> > unsigned> char> a = 5, b = 9;> > // The result is 00001010> > cout < <> 'a < <1 = '> < < (a < < 1) < < endl;> > // The result is 00010010> > cout < <> 'b < <1 = '> < < (b < < 1) < < endl;> > return> 0;> }> |
出力
a < <1 = 10 b < <1 = 18
右シフト(>>)
これは 2 つの数値を受け取り、最初のオペランドのビットを右シフトし、2 番目のオペランドでシフトする桁数を決定する二項演算子です。つまり、整数を右シフトすると、 ある 整数で b 「」と表記される (a>>b) ' は a を 2^b で割ることと同じです。
構文:
a>> b;>
- a: 第 1 オペランド b: 第 2 オペランド
例: 取りましょう a=5 ;それは 101 バイナリ形式で。さて、もし a は 2 だけ右シフトされます つまり、a=a>>2 それから ある となります a=a/(2^2) 。したがって、 a=a/(2^2)=1 次のように書くことができます 01 。
C
// C Program to demonstrate> // use of right-shift operator> #include> // Driver code> int> main()> {> > // a = 5(00000101), b = 9(00001001)> > unsigned> char> a = 5, b = 9;> > // The result is 00000010> > printf> (> 'a>>1 = %d
'> , (a>> 1));>> , (b>> 1));>> |