logo

Java のビット演算子


オペレーター あらゆるプログラミング言語の基本的な構成要素を構成します。 Java にも、論理演算、算術演算、関係演算など、さまざまな計算や関数を実行する必要に応じて使用できる多くの種類の演算子が用意されています。これらの演算子は、提供する機能に基づいて分類されています。以下にいくつかのタイプを示します。

  1. 算術演算子
  2. 単項演算子
  3. 代入演算子
  4. 関係演算子
  5. 論理演算子
  6. 三項演算子
  7. ビット演算子
  8. シフト演算子

この記事では、ビットごとの演算子に関して知っておくべきことをすべて説明します。

ビット演算子

ビット演算子は、数値の個々のビットの操作を実行するために使用されます。これらは、任意の整数型 (char、short、int など) とともに使用できます。これらは、バイナリ インデックス付きツリーの更新およびクエリ操作を実行するときに使用されます。



次に、Java のビットごとの演算子を 1 つずつ見てみましょう。

1. ビット単位の OR (|)

この演算子は二項演算子であり、「|」で示されます。入力値のビットごとの OR を返します。つまり、どちらかのビットが 1 の場合は 1 を返し、そうでない場合は 0 を返します。

例:

a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary)  Bitwise OR Operation of 5 and 7  0101 | 0111  ________  0111 = 7 (In decimal)>

2. ビット単位の AND (&)

Javaで文字をintに変換する

この演算子は、「&」で示される二項演算子です。入力値のビットごとの AND を返します。つまり、両方のビットが 1 の場合は 1 を返し、それ以外の場合は 0 を示します。

例:

a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary)  Bitwise AND Operation of 5 and 7  0101 & 0111  ________  0101 = 5 (In decimal)>

3. ビットごとの XOR (^)

この演算子は、「^」で示される二項演算子です。入力値のビットごとの XOR を返します。つまり、対応するビットが異なる場合は 1 を返し、そうでない場合は 0 を返します。

Angular CLIをアンインストールする

例:

a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary)  Bitwise XOR Operation of 5 and 7  0101 ^ 0111  ________  0010 = 2 (In decimal)>

4. ビット単位の補数 (~)

この演算子は、「~」で示される単項演算子です。この演算子は、入力値の 1 の補数表現を返します。つまり、すべてのビットが反転され、すべての 0 が 1 になり、すべての 1 が 0 になります。

例:

a = 5 = 0101 (In Binary)  Bitwise Complement Operation of 5  ~ 0101  ________  1010 = 10 (In decimal)>

注記: コンパイラはその数値の 2 の補数を返します。つまり、10 の 2 の補数は -6 になります。

ジャワ
// Java program to illustrate // bitwise operators public class operators {  public static void main(String[] args)   b));  // bitwise xor  // 0101 ^ 0111=0010 = 2  System.out.println('a^b = ' + (a ^ b));  // bitwise not  // ~00000000 00000000 00000000 00000101=11111111 11111111 11111111 11111010  // will give 2's complement (32 bit) of 5 = -6  System.out.println('~a = ' + ~a);  // can also be combined with  // assignment operator to provide shorthand  // assignment  // a=a&b  a &= b;  System.out.println('a= ' + a);   }>

出力
a&b = 5 a|b = 7 a^b = 2 ~a = -6 a= 5>

補助スペース:O(1)

時間計算量:O(1)

ジャワ
// Demonstrating the bitwise logical operators class GFG {  public static void main (String[] args) {    String binary[]={  '0000','0001','0010','0011','0100','0101',  '0110','0111','1000','1001','1010',  '1011','1100','1101','1110','1111'  };    // initializing the values of a and b   int a=3; // 0+2+1 or 0011 in binary  int b=6; // 4+2+0 or 0110 in binary    // bitwise or  int c= a | b;    // bitwise and  int d= a & b;    // bitwise xor  int e= a ^ b;    // bitwise not  int f= (~a & b)|(a &~b);  int g= ~a & 0x0f;      System.out.println(' a= '+binary[a]);  System.out.println(' b= '+binary[b]);  System.out.println(' a|b= '+binary[c]);  System.out.println(' a&b= '+binary[d]);  System.out.println(' a^b= '+binary[e]);  System.out.println('~a & b|a&~b= '+binary[f]);  System.out.println('~a= '+binary[g]);  } }>

出力
 a= 0011 b= 0110 a|b= 0111 a&b= 0010 a^b= 0101 ~a & b|a&~b= 0101 ~a= 1100>

ビットシフト演算子 (シフト演算子)

シフト演算子は、数値のビットを左または右にシフトし、それによって数値をそれぞれ 2 で乗算または除算するために使用されます。これらは、数値を 2 で乗算または除算する必要がある場合に使用できます。

構文:

 number   shift_op   number_of_places_to_shift;>

シフト演算子の種類:

シフト演算子はさらに4種類に分類されます。これらは:

  1. 符号付き右シフト演算子 (>>)
  2. 符号なし右シフト演算子 (>>>)
  3. 左シフト演算子(<<)
  4. 符号なし左シフト演算子 (<<<)

注記: Java のシフト演算子の詳細については、次を参照してください。 Javaのシフト演算子

Pythonのパス設定

ユーザー入力のために Java ですべてのビットごとの演算子を実装するプログラム

ジャワ
import java.util.Scanner; public class BitwiseOperators {  public static void main(String[] args)   Scanner input = new Scanner(System.in);  System.out.print('Enter first number: ');  int num1 = input.nextInt();  System.out.print('Enter second number: ');  int num2 = input.nextInt();  System.out.println('Bitwise AND: ' + (num1 & num2));  System.out.println('Bitwise OR: ' + (num1  }>

入力

Enter first number: 4 Enter second number: 8>

出力

Bitwise AND: 0 Bitwise OR: 12 Bitwise XOR: 12 Bitwise NOT: -5 Bitwise Left Shift: 16 Bitwise Right Shift: 1 Bitwise Unsigned Right Shift: 1>

説明

このプログラムは、ユーザーに 2 つの数字、num1 と num2 を入力するよう求めます。次に、&、|、^、~、<>、および>>> 演算子を使用して次のビット単位の演算を実行します。

ビットごとの AND
ビットごとの OR
ビットごとの XOR
ビットごとの NOT
ビット単位の左シフト
ビット単位の右シフト
ビット単位のゼロフィル右シフト

利点

Java でビットごとの演算子を使用する利点は次のとおりです。

  1. スピード: ビット演算は数値のバイナリ表現を直接操作するため、算術演算よりもはるかに高速です。
  2. スペースの最適化: ビット単位の演算を使用すると、複数の値を 1 つの変数に格納できます。これは、限られたメモリで作業する場合に便利です。
  3. ビット操作: ビット単位の演算子を使用すると、数値の個々のビットを正確に制御できるため、暗号化、エラー検出、圧縮などのさまざまなアプリケーションで役立ちます。
  4. コードの簡略化 : ビット単位の演算では、特定のタスクの実行に必要な条件ステートメントとループの数を減らすことでコードを簡素化できます。

要約すると、ビットワイズ オペレーターは、Java アプリケーションのパフォーマンスを最適化し、コードの可読性を向上させ、コードの複雑さを軽減するための重要なツールです。