자바의 비트 연산자 (Bitwise Operators)는 변수의 비트 수준에서 연산을 수행하는 데 사용됩니다. 비트 연산자는 정수 데이터 타입 (int, long)의 이진 표현을 조작하는 데 유용하며, 주로 시스템 프로그래밍 및 비트 조작을 수행할 때 사용됩니다.
1. 비트 AND (&)
& 연산자는 두 개의 피연산자의 각 비트에 대해 논리 AND 연산을 수행합니다. 두 비트가 모두 1이면 결과는 1이 되고, 그렇지 않으면 0이 됩니다.
int a = 5; // 0101 (2진수)
int b = 3; // 0011 (2진수)
int result = a & b; // result는 0001 (2진수), 즉 1 (10진수)
2. 비트 OR (|)
| 연산자는 두 개의 피연산자의 각 비트에 대해 논리 OR 연산을 수행합니다. 두 비트 중 하나 이상이 1이면 결과는 1이 되고, 둘 다 0이면 0이 됩니다.
int x = 5; // 0101 (2진수)
int y = 3; // 0011 (2진수)
int result = x | y; // result는 0111 (2진수), 즉 7 (10진수)
3. 비트 XOR (^)
^ 연산자는 두 개의 피연산자의 각 비트에 대해 논리 XOR(배타적 OR) 연산을 수행합니다. 두 비트가 서로 다르면 결과는 1이 되고, 같으면 0이 됩니다.
int m = 5; // 0101 (2진수)
int n = 3; // 0011 (2진수)
int result = m ^ n; // result는 0110 (2진수), 즉 6 (10진수)
4. 비트 NOT (~)
~ 연산자는 피연산자의 각 비트를 반전시킵니다. 0은 1로, 1은 0으로 변경됩니다.
int p = 5; // 0101 (2진수)
int result = ~p; // result는 11111111111111111111111111111010 (2진수), 즉 -6 (10진수)
5. 비트 왼쪽 시프트 (<<)
<< 연산자는 피연산자의 비트를 왼쪽으로 이동시킵니다. 오른쪽에 0으로 채워집니다.
int q = 5; // 0000 0101 (2진수)
int result = q << 2; // result는 0001 0100 (2진수), 즉 20 (10진수)
6. 비트 오른쪽 시프트 (>>)
>> 연산자는 피연산자의 비트를 오른쪽으로 이동시킵니다. 왼쪽에 부호 비트(양수의 경우 0, 음수의 경우 1)로 채워집니다.
int r = -8; // 1111 1000 (2진수)
int result = r >> 2; // result는 1111 1111 (2진수), 즉 -2 (10진수)
7. 부호 없는 오른쪽 시프트 (>>>)
>>> 연산자는 피연산자의 비트를 오른쪽으로 이동시키며, 왼쪽에 0으로 채워집니다. 부호 비트를 무시합니다.
int s = -8; // 1111 1000 (2진수)
int result = s >>> 2; // result는 0011 1111 (2진수), 즉 63 (10진수)
비트 연산자는 주로 비트 조작, 마스킹, 시프트, 비트 필드 등과 같이 비트 수준에서 작업을 수행할 때 사용됩니다. 그러나 주의해야 할 중요한 점은 비트 연산자는 읽기 및 유지보수가 어려울 수 있으며 오류를 발생시킬 가능성이 높기 때문에 주의해서 사용해야 합니다. 일반적으로 프로그램의 가독성을 저해하거나 버그를 발생시킬 수 있으므로 신중하게 사용해야 합니다.
With ChatGPT
'JAVA > 포스팅' 카테고리의 다른 글
자바 instanceof 연산자 (Type Comparison Operator) (0) | 2023.11.01 |
---|---|
자바 조건 (삼항) 연산자 (Conditional Operator) (0) | 2023.11.01 |
자바 증가/감소 연산자 (Increment/Decrement Operators) (0) | 2023.11.01 |
자바 대입 연산자 (Assignment Operators) (0) | 2023.11.01 |
자바 논리 연산자 (Logical Operators) (0) | 2023.11.01 |