논리 연산자
| 구분 | 연산식 | 결과 | 설명 | ||
| AND (논리곱) |
true | && | true | true | 피연산자 모두가 true일 경우에만 연산 결과가 true |
| true | false | false | |||
| false | true | false | |||
| false | false | false | |||
| OR (논리합) |
true | || | true | true | 피연산자 중 하나만 true이면 연산 결과는 true |
| true | false | true | |||
| false | true | true | |||
| false | false | false | |||
| XOR (배타적 논리합) |
true | ^ | true | false | 피연산자가 하나는 true이고 다른 하나가 false 일 경우에만 연산 결과가 true |
| true | false | true | |||
| false | true | true | |||
| false | false | false | |||
| NOT (논리 부정) |
! | true | false | 피연산자의 논리값을 바꿈 | |
| false | true | ||||
비트 논리 연산자
| 구분 | 연산식 | 결과 | 설명 | ||
| AND (논리곱) |
1 | & | 1 | 1 | 두 비트가 모두 1일 경우에만 연산 결과가 1 |
| 1 | 0 | 0 | |||
| 0 | 1 | 0 | |||
| 0 | 0 | 0 | |||
| OR (논리합) |
1 | | | 1 | 1 | 두 비트 중 하나만 1이면 연산 결과는 1 |
| 1 | 0 | 1 | |||
| 0 | 1 | 1 | |||
| 0 | 0 | 0 | |||
| XOR (배타적 논리합) |
1 | ^ | 1 | 0 | 두 비트 중 하나는 1이고 다른 하나가 0일 경우 연산 결과는 1 |
| 1 | 0 | 1 | |||
| 0 | 1 | 1 | |||
| 0 | 0 | 0 | |||
| NOT (논리 부정) |
! | 1 | 0 | 보수 | |
| 0 | 1 | ||||
비트 논리 연산자는 bit 단위로 논리 연산을 수행한다. 0과 1이 피연산자가 되므로 2진수 0과 1로 저장되는 정수 타입만 피연산자가 될 수 있고, 실수 타입은 피연산자가 될 수 없다.
비트 논리 연산자는 byte, short, char 타입 피연산자를 int 타입으로 자동 변환한 후 연산을 수행한다. 따라서 연산 결과도 int 타입이 되므로 int 변수에 대입해야 한다.
byte num1 = 45;
byte num2 = 25;
byte result = num1 & num2; // 컴파일 에러
int result = num1 & num2; // 9
비트 이동 연산자
| 구분 | 연산식 | 설명 | ||
| 이동 (shift) |
a | << | b | 정수 a의 각 비트를 b만큼 왼쪽으로 이동 오른쪽 빈자리는 0으로 채움 a x 2^b과 동일한 결과 |
| a | >> | b | 정수 a의 각 비트를 b만큼 오른쪽으로 이동 왼쪽 빈자리는 최상위 부호 비트와 같은 값으로 채움 a / 2^b과 동일한 결과 |
|
| a | >>> | b | 정수 a의 각 비트를 b만큼 오른쪽으로 이동 왼쪽 빈자리는 0으로 채움 |
|
'Language > JAVA' 카테고리의 다른 글
| [JAVA] 삼항(조건) 연산자 (0) | 2024.09.03 |
|---|---|
| [JAVA] 대입 연산자 (0) | 2024.09.03 |
| [JAVA] 비교 연산자 (0) | 2024.09.03 |
| [JAVA] 산술 연산자 (1) | 2024.09.03 |
| [JAVA] 부호 연산자와 증감 연산자 (0) | 2024.09.03 |