Java 프로그래밍 - 여러가지 연산자

김상윤·2022년 3월 31일
0

항과 연산자

항이라는 것은 연산을 할때 사용되는 값이다.

단항 연산자

단항연산자는 항이 한 개인 연산자를 의미한다.

num++

이항 연산자

이항연산자는 항이 두 개인 연산자를 의미한다.

1 + 1

삼항 연산자

삼항연산자는 항이 세 개인 연산자를 의미한다.

int a = 100;
String result = (a == 100) ? "yes":"no";
System.out.println(result);
yes

대입 연산자(=)

대입연산자란 우측에 기재된 데이터를 좌측에 기재된 변수에 대입하는 것을 의미한다.

ex) +10, -10

부호 연산자(+,-)

부호 연산자란 부호를 나타내는 연산자를 의미한다.

ex) +10, -10
(+의 경우에는 생략이 가능하다.)

산술 연산자(+,-,*,/,%)

+,-,*,/는 각각 덧셈,뺄셈,곱셈,나눗셈을 의미한다.
%의 경우는 나머지연산(modula)를 의미하고, 이것은 나누고 난 뒤, 나머지를 반환하는 기호이다.

ex) 10 % 3 = 1

증가/감소 연산자(++,--)

단순하게 값을 1만큼 늘리거나(++), 1만큼 감소시키는(--) 연산자이다.

        num = 10;
        System.out.println(num++);
        System.out.println(num);
        num = 10;
        System.out.println(++num);
        System.out.println(num);
10
11
11
11

++가 뒤에붙은 경우는, 먼저, 해당 라인을 처리하고, 그 뒤에 1을 증가시킨다는 의미이다.
따라서, 먼저 10이 출력되고, 그 뒤에 1이 추가되었다.
반대로 ++을 앞에써주면, 1을 먼저 증가시켜주고, 해당 라인을 처리하게 된다.
따라서, 먼저 11이 출력되고, 그 뒤에도 똑같이 11이 출력된다.
--의 경우도 마찬가지이다.

관계 연산자(>,<,>=,<=,==,!=)

관계연산자란, 두 항의 값 자체를 비교하는 연산자이다. 결과 값은 비교한 결과를 토대로 참,거짓으로 출력된다.

ex) 10 > 9, 5 != 3

	num = 10;
    num2 = 11;
    System.out.println(num > num2);
    System.out.println(num != num2);
false
true

num은 num2보다 작으므로 false가 출력되고,
num과 num2는 다르므로 true가 출력되었다.

논리 연산자 (&&,||,!)

논리식에 의해서 참, 거짓을 판단하는 연산자이다.
결과에 따라서, true, false를 리턴한다.
&&은 and를,
||은 or를,
!은 not을 의미하는 연산자이다.

ex) (10 > 0) && (1 == 0) //false
ex) (10 > 0 ) || (1 == 0) //true

복합 대입 연산자

대입 연산자와 다른 연산자를 조합한 연산이다. 주로 대입연산자와 산술연산자를 조합하여 사용된다.

ex) num1 += num2
ex) num1 %= num2

비트 연산자

비트 단위로 연산을 수행하는 연산자이다.
기본 논리연산자가, &&,||를 사용한다면, 비트연산자에서는 &,|로 표기한다.

AND연산자(&)

두 개의 비트값이 모두 1인 경우에만 1을 리턴한다.

ex) 5 & 3 -> 1
(5는 0101(2)이고, 3은 0011(2)이므로 각 비트를 &연산한다면, 0001(2)가 되므로 1이다.)

OR연산자(|)

둘 중 하나라도 1이라면, 1을 리턴한다.

ex) 5 | 3 -> 7
(5는 0101(2)이고, 3은 0011(2)이므로 각 비트를 |연산한다면, 0111(2)가 되므로 7이다.)

XOR연산자(^)

두 개의 비트값이 같으면0을 리턴, 다르면 1을 리턴한다.

ex) 5 ^ 3 -> 6
(5는 0101(2)이고, 3은 0011(2)이므로 각 비트를 ^연산한다면, 0001(2)가 되므로 6이다.)

반전연산자(~)

비트 값이 0이면 1로 1이면 0으로 반전

ex) ~5 -> -6
(5는 0101(2)이고, 이것을 반전시키면 1010(2)이다. 이것을 2의 보수를 취하면 -6이 된다.)

비트 이동 연산자(<<,>>,>>>)

비트를 이동시키는 연산자이다.

<<연산자

비트를 왼쪽으로 이동시키는 연산자이다. 2를 곱하는 효과를 가진다.

3<<1 -> 6
(3은 0011(2)이고, 이것을 죄측으로 1만큼 이동시켰으므로 0110(2)가 된다. 맨 마지막 숫자는 0으로 채운다.)

>>연산자

비트를 오른쪽으로 이동시키는 연산자이다. 2를 나누는 효과를 가진다.

3>>1 -> 1
(3은 0011(2)이고, 이것을 우측으로 1만큼 이동시켰으므로 0001(2)가 된다. 맨 처음 숫자는 기존의 항의 부호로 채운다.)
즉 >>연산자의 경우에는 부호비트를 유지한다.

>>>연산자

비트를 오른쪽으로 이동시킨다. 다만, 이 경우에는 부호비트 상관없이 0으로 채운다.
즉 부호비트의 경우에는 부호비트를 유지하지 않는다.

profile
알고리즘을 아직도 모르겠다

0개의 댓글