Language/JAVA

[JAVA] 논리 연산자

IT수정 2024. 9. 3. 17:54

논리 연산자

구분 연산식 결과 설명
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