연산자

  • 프로그램에서 데이터를 처리하여 결과를 산출하는 것을 연산(operation)이라 한다
  • 연산에 사용되는 표시나 기호를 연산자(operator)라고 한다.
  • 항(Term) : 연산을 할 때 사용하는 값이며, 항의 수에 따라 단항, 이항, 삼항 연사자로 구분한다.
    • 단항연산자: +num;
    • 이항연산자: a+b;
    • 삼항연산자: (a>b)?1:0;


연산자의 종류

대입 연산자

  • 우측의 데이터를 좌측의 변수에 대입하는 연산자
1
int i = 1;


부호 연산자

  • 부호를 나타내는 연산자
1
+10 , -10


산술 연산자

  • 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%) 처럼 산술에 이용되는 연산자
1
2
3
4
5
6
7
8
int x = 10;
int y = 2;

x + y; //결과 : 12
x - y; //결과 : 8
x * y; //결과 : 20
x / y; //결과 : 5
x % y; //결과 : 0


증감 연산자

  • 값을 1만큼 늘리거나 줄일 때 사용하는 연산자
1
2
3
4
5
6
int a=1, b=1;
++a; //결과 : 2
b++; //결과 : 1

--a; //결과 : 0
b--; //결과 : 1

:sparkles:증감 연산자에 대한 이해

  • ++a 의 경우 먼저 피연산자의 값을 1 증가시킨 후에 해당 연산을 진행한다.
  • a++ 의 경우 먼저 해당 연산을 수행하고 나서 피연산자의 값을 1 증가시킨다.


관계 연산자

두 항의 크기 비교하는 연산자이며, 결과 값은 true 또는 false 로 출력

1
2
3
4
5
int a=10, b=9;
a>b; //결과 : true
a<b; //결과 : false
a==b; //결과 : false
a!=b; //결과 : true


논리 연산자

논리식에 대해 참,거짓 판단하는 연산자이며, 결과 값은 true 또는 false 로 출력

1
2
(10>9) && (1==0); //결과 : false (&&는 그리고(and)란 의미이므로 2개의 조건이 모두 만족해야 한다.)
(10>9) || (1==0); //결과 : true (||는 또는(or) 이란 의미이므로 2개의 조건 중 하나만 만족하면 된다.)


복합 대입 연산자

대입 연산자를 다른 연산자와 조합한 연산자

1
2
int a = 10, b=5;
a+=b; //결과 : 15 (a = a+b 와 같은 의미)


삼항 연산자

<조건식?참:거짓> 의 방법으로 사용하는 연산자입니다.

1
2
3
4
5
6
int a=10, int b=9;

//a가 b보다 크다면 true 아니면 false를 출력하는 연산을 한다. 
//따라서 result는 true라는 결과가 출력 된다.
String result = (a>b)?"true":"false";
System.out.println(result); //결과 : true


이진법

이진법은 우리가 사용하는 숫자(십진법) 과 다르게 컴퓨터에서 데이터 표현에 사용하는 방식이며, 0과 1 두 개의 수를 이용하여 숫자를 표현한다.

10진수 0 1 2 3 4 5 6 7 8 9 10
2진수 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010

이진법에서 각 자리수는 우측부터 20, 21, 22… 순을 의미

예를들어 10진수 5를 2진수로 표현하면 22(4) + 20(1) 인 101이다.

이진법에서 양수와 음수를 판단하는 기준인 부호 비트는 제일 왼쪽에 있는 최상위 비트를 기준으로 하는데 부호 비트가 0이면 양수, 1이면 음수를 의미한다.


2의 보수

10진수에서 음수를 표현하고 싶을 때는 마이너스(-)기호를 사용하면 되지만, 2진수에서는 다른 방식으로 음수를 표현한다.

그렇기 때문에 이진법에서 음수를 표현하고 싶을 때에는 2의 보수를 이용한다.

예를 들어서 -5를 표현하고 싶다면 10진수 5의 2진수(0101) 을 반전 후 1을 더한 값 1011이 2의 보수이다. (101의 반전 : 010 + 1)


비트 논리 연산자

각각의 비트 단위로 연산하는 연산자입니다.

  • AND 연산자(&) : 두 개의 비트 값이 모두 1인 경우에만 결과 1

bit_and

  • OR 연산자(|) : 두 개의 비트 값 중 하나라도 1이면 결과 1

bit_or

  • XOR 연산자(^) : 두 개의 비트 값이 같으면 0, 다르면 1

bit_xor

  • NOT 연산자(~) : 비트 값이 0이면 1로, 1이면 0으로 반전

bit_not


비트 이동 연산자

  • Left Shift 연산자(<<) : 비트를 왼쪽으로 이동

  • Right Shift 연산자(>>) : 비트를 오른쪽으로 이동

    • 오른쪽으로 이동할 때 (>>) 는 기존의 비트 연산자의 부호 비트가 그대로 따라온다.
    • 하지만 (>>>) 는 부호 비트의 값을 무조건 0으로 고정한다.
1
2
3
4
5
6
int num1 = 8, num2 = -8;

System.out.println("<< 연산자에 의한 결과 : "+ (num1 << 1));	//결과 : 16 (곱셈 : num1 * 2^1)
System.out.println(">> 연산자에 의한 결과 : "+ (num2 >> 2));	//결과 : -2 (나눗셈 : num2 / 2^2)
System.out.println(">>> 연산자에 의한 결과 : "+ (num1 >>> 2));	//결과 : 2
System.out.println(">>> 연산자에 의한 결과 : "+ (num2 >>> 2));	//결과 : 1073741822

카테고리:

업데이트:

댓글남기기