logo

C のシフト演算子

このセクションでは、C プログラミング言語のビット単位のシフト演算子について説明します。ビット単位のシフト演算子は、プログラムの要件に応じてバイナリ ビットを左方向または右方向にシフトするために使用されます。

C のシフト演算子

シフト演算子はビットのシフト位置により 2 種類に分類されます。

  1. 左シフト演算子
  2. 右シフト演算子

左シフト演算子

左シフト演算子は、ビットごとのシフト演算子の一種で、バイナリ ビットに対して演算を実行します。これは、ビットの位置を左側にシフトまたは移動し、ビットをシフトした後に右側に作成された空のスペースに 0 を追加する 2 つのオペランドを必要とする二項演算子です。

構文

 var_name << no_of_position 

上記の構文では、var_name は、左シフト (<<) operation is to be performed shift the binary bits at left side. and no_of_position variable represents number of placed or shifted in other words, operator shifts first operand on side by defined second operand.< p>

たとえば、整数変数 num の値は 22 で、そのバイナリ形式は 10110 です。 ここで、左シフト演算子を使用してバイナリ ビットを 2 シフトします。num = num << 2 は num = num * (2 と等しくなります) ^2)。そして、num の新しい値は 22* (2 ^ 2) = 88 で、これはバイナリ形式の 1011000 と同じです。

例 1: C での左シフト演算子の使用法を示すプログラム

 #include int main () { // declare local variable int num; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); // use left shift operator to shift the bits num = (num &lt;&lt; 2); // It shifts two bits at the left side printf (&apos; 
 After shifting the binary bits to the left side. &apos;); printf (&apos; 
 The new value of the variable num = %d&apos;, num); return 0; } 

出力

 Enter a positive number: 25 After shifting the binary bits to the left side. The new value of the variable num = 100 

例 2: C 言語の unsigned int データで左シフト演算子を使用するプログラム

 #include int main () { // declare local variable unsigned int num = 0xff; // use left shift operator to shift the bits num = (num &lt;&lt; 2); printf (&apos; 
 After shifting the binary bits to the left side. &apos;); printf (&apos; 
 The new value of the unsigned variable num = %d&apos;, num); return 0; } 

出力

 After shifting the binary bits to the left side. The new value of the unsigned variable num = 1020 

例 3: ユーザーから正の数を入力して左シフト演算子を実行するプログラム

 #include int main () { // declare local variable int num, bit; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); printf (&apos; No. of binary bits shifted to the left side: &apos;); scanf (&apos; %d&apos;, &amp;bit); // use left shift operator to shift the bits num = (num &lt;&lt; bit); printf (&apos; 
 After shifting the bits to the left side. &apos;); printf (&apos; 
 The new value of the num = %d&apos;, num); return 0; } 

出力

 Enter a positive number: 40 No. of binary bits shifted to the left side: 4 After shifting the bits to the left side. The new value of the num = 640 

上の例では、ユーザー定義の正の数 40 の 2 進ビットは 101000 です。その後、左側の 2 進ビットをシフトする数値として 4 を採用します。次に、左シフト演算子は左側で 4 バイナリ ビットをシフトし、右側にスペースが作成され、右側に 4 つのゼロが埋められるか追加され、バイナリ値 1010000000 が返されます。これは次と同等です。 10進数の640。

右シフト演算子

右シフト演算子は、右側のビットを移動するために使用されるビット単位のシフト演算子の一種で、二重 (>>) 矢印記号で表されます。左シフト演算子と同様に、右シフト演算子も右側のビットをシフトし、ビットをシフトした後に左側に作成された空きスペースに 0 を挿入する 2 つのオペランドを必要とします。

構文

 var_name &gt;&gt; no_of_position 

上記の構文では、var_name は、右側のバイナリ ビットをシフトするために右シフト (>>) 演算が実行される整数変数を表します。 no_of_position 変数は、右側に配置またはシフトされるビット数を表します。言い換えれば、右シフト演算子は、第 2 オペランドの合計ビット数を定義することによって、右側の第 1 オペランドのバイナリ ビットをシフトします。

例 1: C での右シフト演算子の使用法を示すプログラム

 #include int main () { // declare local variable int num; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); // use right shift operator to shift the bits num = (num &gt;&gt; 2); // It shifts two bits at the right side printf (&apos; 
 After shifting the binary bits to the right side. &apos;); printf (&apos; 
 The new value of the variable num = %d&apos;, num); return 0; } 

出力

 Enter a positive number: 25 After shifting the binary bits to the right side. The new value of the variable num = 6 

例 2: C 言語の unsigned int データで右シフト演算子を使用するプログラム

 #include int main () { // declare local variable unsigned int num = 0xff; // use right shift operator to shift the bits num = (num &gt;&gt; 2); printf (&apos; 
 After shifting the binary bits to the right side. &apos;); printf (&apos; 
 The new value of the unsigned variable num = %d&apos;, num); return 0; } 

出力

 After shifting the binary bits to the right side. The new value of the unsigned variable num = 63 

例 3: ユーザーから正の数を入力して右シフト演算を実行するプログラム

 #include int main () { // declare local variable int num, bit; printf (&apos; Enter a positive number: &apos;); scanf (&apos; %d&apos;, &amp;num); printf (&apos; No. of binary bits shifted to the right side: &apos;); scanf (&apos; %d&apos;, &amp;bit); // use right shift operator to shift the bits num = (num &gt;&gt; bit); printf (&apos; 
 After using the right shift operator to shift the bits at the right side. &apos;); printf (&apos; 
 New value of the num = %d&apos;, num); return 0; } 

出力

 Enter a positive number: 40 No. of binary bits shifted to the right side: 4 After using the right shift operator to shift the bits to the right. The new value of the num = 2