본문으로 건너뛰기
Advertisement

3.6 그 외의 연산자 (Other Operators)

앞서 배운 산술, 비교, 논리, 대입 연산자 외에도 실무에서 유용하게 쓰이는 조건 연산자(삼항 연산자) 와 컴퓨터 공학적 지식이 필요한 비트 연산자 에 대해 알아봅니다.

1. 조건 연산자 (Ternary Operator)

조건 연산자는 자바에서 유일하게 피연산자를 3개나 가지는 삼항 연산자 입니다. 단순한 if-else 문을 아주 짧고 간결하게 한 줄로 줄여 쓸 수 있다는 엄청난 장점이 있습니다.

// 구조: 조건식 ? 참일 때 반환할 값 : 거짓일 때 반환할 값

int score = 85;
String result = (score >= 80) ? "합격" : "불합격";
System.out.println(result); // 합격 출력

if-else문으로 여러 줄 써야 할 코드를 변수 할당과 동시에 단 한 줄로 깔끔하게 끝낼 수 있으므로, 실무에서 로직을 간단하게 정리할 때 매우 자주 사용됩니다.

2. 비트 연산자 (Bitwise Operators)

비트 연산자는 피연산자를 10진수 숫자가 아닌, 이진수(0과 1) 단위인 비트(bit) 단위로 세밀하게 연산 하는 기호입니다. 연산 속도가 아주 빠르며 메모리 효율을 극대화할 수 있기 때문에 시스템 프로그래밍이나 암호화 등에서 주로 쓰입니다.

연산자기호설명
AND&두 비트가 모두 1일 때만 1을 반환
OR|두 비트 중 하나라도 1이면 1을 반환
XOR^두 비트가 서로 다를 때만 1을 반환 (배타적 논리합)
NOT~모든 비트를 반전 시킴 (0은 1로, 1은 0으로)
int a = 5;  // 0101 (2진수)
int b = 3; // 0011 (2진수)

System.out.println(a & b); // 0001 (10진수로 1)
System.out.println(a | b); // 0111 (10진수로 7)
System.out.println(a ^ b); // 0110 (10진수로 6)

3. 쉬프트 연산자 (Shift Operators)

쉬프트 연산자는 비트 단위의 값을 지정된 횟수만큼 왼쪽이나 오른쪽으로 연속해서 밀어내는(Shift) 연산자입니다. 컴퓨터 내부 프로세서 아키텍처 구조상, 초고속으로 2를 곱하거나 2로 나누는 결과에 도달할 수 있는 가장 빠른 연산 방법입니다.

  • << (Left Shift): 비트를 왼쪽으로 이동시키며, 빈자리는 0으로 채웁니다. (값에 2^n을 곱한 것과 완벽히 같음)
  • >> (Right Shift): 비트를 오른쪽으로 이동시키고, 부호 비트를 보존하며 빈자리를 채웁니다. (값에 2^n으로 나눈 몫과 같음)
  • >>> (Unsigned Right Shift): 빈 자리를 부호에 상관없이 무조건 양수(0)으로 채웁니다.
Advertisement