[Java] 1_6_자바의 여러 가지 연산자(2)

Haeun Noh·2022년 8월 1일
0

0802


그제 배웠던 연산자 강의의 연장선으로 오늘은 조금 더 다양한 연산자에 대해 배웁니다. 복합 대입 연산자, 조건 연산자, 비트 연산자 등등, 그리고 지금껏 배운 모든 연산자들의 우선순위를 한 눈에 파악해보며 익혀보도록 하겠습니다. 그럼 바로 정리 시작할게요!



복합 대입 연산자

복합 대입 연산자는 대입 연산자와 다른 연산자를 함께 사용합니다.
또한 뒤에서 나올 비트 연산자도 같이 쓸 수 있습니다.

복합 대입 연산자의 형태는 다음과 같습니다.

+=, -=, *=, /=, %=, <<=, >>=, >>>=, <<<=, &=, |=, ^=

복합 대입 연산자를 사용하면 좀 더 프로그램이 간결해질 수 있습니다. lvalue(왼쪽변수)와 rvalue(오른쪽변수)를 해당 연산자로 연산한 후 그 값을 lvalue(왼쪽변수)에 대입하게 됩니다.

int left = left + right;
int left += right;

예시로 들어보니 확실히 식이 간결해지지 않았나요?



조건 연산자

조건 연산자는 삼항 연산자입니다.
조건식의 결과가 true(참)일 경우와 false(거짓)일 경우에 따라 다른 식이나 결과가 수행되는 연산자입니다.
제어문 중 조건문을 간단히 표현할 때 사용합니다.

조건 연산자의 형태는 다음과 같습니다.

( 조건식 ) ? 참일 때의 결과 : 거짓일 때의 결과 ;
ex)  int num = ( 3>5 ) ? 10 : 20 ;

조건식이 참이면 참일 때의 결과가, 거짓이면 거짓일 때의 결과가 해당 변수에 대입됩니다. 예시에서는 조건식의 결과가 거짓이므로 변수 num거짓일 때의 결과20이 대입되겠네요.
여기서 결과는 꼭 숫자가 아니어도 됩니다. 문장이 들어갈 수도 있습니다.



비트 연산자

비트 연산자는 우리가 전에 배웠던 그 bit의 비트입니다. 10진수가 아닌 2진수의 형태로 연산하는 것입니다. 따라서 비트 연산자는 정수에만 사용할 수 있습니다.

비트 연산자의 종류입니다.

  • ~ (비트의 반전, 1의 보수) : 비트 값을 0은 1로, 1은 0으로 반전하는 연산자
    int a;
    a = ~a;
  • & (비트 단위 AND) : 두 비트가 모두 1인 경우만 1, 아니면 0
  • | (비트 단위 OR) : 두 비트가 모두 0인 경우만 0, 아니면 1
  • ^ (비트 단위 XOR) : 두 비트가 다른 값이면 1, 같은 값이면 0
  • << (왼쪽 shift) : 비트를 오른쪽에서 왼쪽으로 이동시키는 연산자 (*2)
    int a = 1;
    a << 2 (변수 a를 2비트만큼 오른쪽으로 이동)
    a의 값 : 4
  • >> (오른쪽 shift) : 비트를 왼쪽에서 오른쪽으로 이동시키는 연산자 (/2)
    - 부호비트가 0인 경우(양수)는 0으로 채워지고, 1인 경우(음수)는 1로 채워진다.
    int a = 8;
    a >> 2 (변수 a를 2비트만큼 왼쪽으로 이동)
    a의 값 : 2
  • >>> (오른쪽 shift) : shift로 비트 이동은 동일하지만, 남은 공간을 무조건 부호비트가 아닌 0으로 채우는 연산자
    - >>와 동일한 연산이지만 채워지는 비트가 부호와 상관없이 0이다.


비트 연산자의 활용

비트 연산자를 사용할 때 쓰이는 용어들을 살펴보겠습니다.

  • 마스크 : 특정 비트들은 가리고 몇 개의 비트들의 값만 사용할 때
  • 비트켜기 : 특정 비트들만을 1로 설정해서 사용하고 싶을 때
  • 비트끄기 : 특정 비트들만을 0으로 설정해서 사용하고 싶을 때
  • 비트토글 : 모든 비트들을 0은 1로, 1은 0으로 바꾸고 싶을 때


연산자 우선순위

연산자 우선순위를 보고 옳은 순서대로 연산을 예측해봅시다.

순위연산자종류
1일차식() [] .
2단항! ++ -- + -
3산술% /
4산술+ -
5비트 이동>> <<
6관계< > <= >=
7관계== !=
8비트 곱&
9비트 차^
10비트 합l
11논리 곱&&
12논리 합ll
13조건? :
14대입= += -= *= %= /=


profile
기록의 힘을 믿는 개발자, 노하은입니다!

0개의 댓글