비트 논리 연산자는 이진수 비트(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 연산은 간단한 암호화 알고리즘에서 사용되기도 합니다.
비트 연산자는 효율적이고 빠르기 때문에, 저수준 프로그래밍이나 성능이 중요한 상황에서 유용하게 사용될 수 있습니다.
'Java' 카테고리의 다른 글
| Java 스레드 실행 및 안전한 종료 방법 (2) | 2025.02.16 |
|---|---|
| JAVA Index 기반 문자열 변형 및 랜덤 셔플러 (2) | 2025.02.15 |
| Java 빌더 패턴 (Builder Pattern) (0) | 2025.01.29 |
| Java List.of() 객체(Apple)에 담긴 값 선택(filter)하여 꺼내기 (0) | 2025.01.27 |
| Java List.of() (1) | 2025.01.26 |