비트 논리 연산자는 이진수 비트(bit) 수준에서 연산을 수행하는 연산자입니다. 자바를 비롯한 대부분의 프로그래밍 언어에서 이러한 연산자들은 비트 단위로 AND, OR, XOR, NOT 등의 연산을 수행합니다.

 

1. 비트 AND 연산자 (&)

비트 AND 연산자는 두 비트가 모두 1일 때만 1을 반환하고, 나머지 경우에는 0을 반환합니다.

작동 원리:

  • 1 & 1 = 1
  • 1 & 0 = 0
  • 0 & 1 = 0
  • 0 & 0 = 0
int a = 5;   // 5는 이진수로 0101
int b = 3;   // 3은 이진수로 0011
int result = a & b;  // result는 1이 됩니다 (0001)

 

2. 비트 OR 연산자 (|)

비트 OR 연산자는 두 비트 중 하나라도 1이면 1을 반환하고, 둘 다 0일 때만 0을 반환합니다.

작동 원리:

  • 1 | 1 = 1
  • 1 | 0 = 1
  • 0 | 1 = 1
  • 0 | 0 = 0
int a = 5;   // 5는 이진수로 0101
int b = 3;   // 3은 이진수로 0011
int result = a | b;  // result는 7이 됩니다 (0111)

 

3. 비트 XOR 연산자 (^)

비트 XOR 연산자는 두 비트가 서로 다를 때 1을 반환하고, 같을 때는 0을 반환합니다.

작동 원리:

  • 1 ^ 1 = 0
  • 1 ^ 0 = 1
  • 0 ^ 1 = 1
  • 0 ^ 0 = 0
int a = 5;   // 5는 이진수로 0101
int b = 3;   // 3은 이진수로 0011
int result = a ^ b;  // result는 6이 됩니다 (0110)

 

4. 비트 NOT 연산자 (~)

비트 NOT 연산자는 단항 연산자로, 각 비트를 반전시킵니다. 1은 0으로, 0은 1로 바뀝니다.

작동 원리:

  • ~1 = 0
  • ~0 = 1
int a = 5;   // 5는 이진수로 0101
int result = ~a;  // result는 -6이 됩니다 (이진수로 1010, 즉 2의 보수)

 

설명:

  • 자바에서는 부호 있는 정수형을 사용하기 때문에, 비트 NOT 연산을 수행하면 2의 보수(컴퓨터에서 음수를 표현하는 방식)로 변환됩니다.
  • 예를 들어, 5의 이진수는 32비트 정수에서 00000000 00000000 00000000 00000101이며, NOT 연산 후 11111111 11111111 11111111 11111010이 되어 -6이 됩니다.

5. 비트 연산자의 활용

  • 마스크 처리: 특정 비트만 변경하거나 확인할 때 사용됩니다.
    • 예: 특정 플래그를 켜거나 끌 때
  • 비트 플래그: 여러 상태나 옵션을 하나의 변수로 관리할 때 비트 연산을 사용합니다.
  • 암호화 및 해싱: XOR 연산은 간단한 암호화 알고리즘에서 사용되기도 합니다.

비트 연산자는 효율적이고 빠르기 때문에, 저수준 프로그래밍이나 성능이 중요한 상황에서 유용하게 사용될 수 있습니다.

+ Recent posts