자바 시작하기 - 연산자

지니·2024년 7월 7일
0

자바 기초

목록 보기
9/10
post-thumbnail

항과 연산자

단항 연산자

: 항이 한 개

num++

이항 연산자

: 항이 두 개

1+1

삼항 연산자

: 항이 세 개

(3>1) ? 1:0


대입 연산자, 부호 연산자

대입 연산자 (=)

: 우측의 데이터를 좌측의 변수에 대입

int num = 100;

부호 연산자 (+, -)

: 부호를 나타내는 연산자

+10, -10


산술 연산자, 증가/감소 연산자

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

10 % 3

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

: 값을 1만큼 늘리거나 (++), 1만큼 줄임(--)

num++, ++num
num--, --num


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

: 두 항의 값 크기 비교

  • 결과 값은 비교 결과에 따라 true 또는 false
10 > 9
5 != 3


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

: 논리식에 대해 참 거짓 판단

  • 결과 값은 판단 결과에 따라 true 또는 false
(10 > 9) && (1 == 0)
(10 > 9) || (1 == 0)


복합 대입 연산자

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

  • 코드를 간결하게 작성할 때 사용
num1 += num2;
num1 %= num2;



개념 관련 코드입니다.

public class Main5 {
    public static void main(String[] args) {

//      1. 대입 연산, 부호 연산자
        int num = 100;
        num = 10;
        num = +10;
        num = -10;


//      2. 산술 연산자, 증가/감소 연산자
        System.out.println("== 산술 연산자, 증가/감소 연산자 ==");
        int numX = 10;
        int numY = 3;
        int result = 0;
        result = numX + numY;
        result = numX - numY;
        result = numX * numY;
        result = numX / numY;
        result = numX % numY;
        System.out.println(result);

        int numZ = 1;
        System.out.println(numZ++);
        System.out.println(numZ);

        numZ = 1;
        System.out.println(++numZ);
        System.out.println(numZ);

        numZ = 1;
        System.out.println(numZ--);
        System.out.println(numZ);

        numZ = 1;
        System.out.println(--numZ);
        System.out.println(numZ);


//      3. 관계 연산자
        System.out.println("== 관계 연산자 ==");
        int numA = 10;
        int numB = 9;

        System.out.println(numA > numB);
        System.out.println(numA < numB);
        System.out.println(numA == numB);
        System.out.println(numA != numB);


//      4. 논리 연산자
        System.out.println("== 논리 연산자 ==");
        System.out.println((10 > 9) && (1 == 0));
        System.out.println((10 > 9) || (1 == 0));


//      5. 복합 대입 연산자
        System.out.println("== 복합 대입 연산자 ==");
        int num1 = 10;
        int num2 = 5;
        num1 += num2;
        System.out.println(num1);
        num1 -= num2;
        System.out.println(num1);
        num1 *= 2;
        System.out.println(num1);
        num1 %= 3;
        System.out.println(num1);

//      6. 삼항 연산자
        System.out.println("== 삼항 연산자 ==");
        int a = 100;
        String aResult = (a == 100)? "yes" : "no";
        System.out.println("aResult = " + aResult);

    }

}

출력 결과입니다.

== 산술 연산자, 증가/감소 연산자 ==
1
1
2
2
2
1
0
0
0
== 관계 연산자 ==
true
false
false
true
== 논리 연산자 ==
false
true
== 복합 대입 연산자 ==
15
10
20
2
== 삼항 연산자 ==
aResult = yes



2진법

  • 컴퓨터에서 데이터 표현에 사용
  • 2를 기반으로 하는 숫자체계
10진수2진수
00
11
210
311
4100
5101
6110
7111
81000
91001
101010

2의 보수

  • 2의 제곱수에서 빼서 얻은 이진수

2진수 3의 2의 보수 : 11 -> 01


비트 연산자

: 비트 단위로 연산

  • 기본 연산자와 비트 연산자 비교
기본 연산자비트 연산자
5 && 3
5 \\ 3
0101 & 0011
0101 \ 0011

비트 논리 연산자

AND 연산자 (&)

: 두 개의 비트 값이 모두 1인 경우에만 결과 1

bit1bit2결과값
000
010
100
111

5 & 3 -> 1
bit1bit2bit3bit4
50101
30011
결과0001

OR 연산자 (|)

: 두 개의 비트 값 중 하나라도 1이면 결과 1

bit1bit2결과값
000
011
101
111

5 & 3 -> 7
bit1bit2bit3bit4
50101
30011
결과0111

XOR 연산자 (^)

: 두 개의 비트 값이 같으면 0, 다르면 1

bit1bit2결과값
000
011
101
110

5 & 3 -> 6
bit1bit2bit3bit4
50101
30011
결과0110

반전 연산자 (~)

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

bit1결과값
01
10

~5 -> -6
bit1bit2bit3bit4
50101
결과1010


비트 이동 연산자

<< 연산자

: 비트를 왼쪽으로 이동

3 << 1
bit1bit2bit3bit4
30011
결과0110

>> 연산자

: 비트를 오른쪽으로 이동

3 >> 1
bit1bit2bit3bit4
30011
결과0000

>>> 연산자

: 비트를 오른쪽으로 이동 (부호 비트 상관없이 0으로 채움)


개념 관련 코드입니다.

public class Main6 {
    public static void main(String[] args) {

//      1. 비트 논리 연산자
        System.out.println("== 비트 논리 연산자 ==");
//      1-1. AND 연산자 (&)
        int num1 = 5;
        int num2 = 3;
        int result = 0;

        result = num1 & num2;
        System.out.println(result);
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num2)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));

//      1-2. OR 연산자 (|)
        num1 = 5;
        num2 = 3;
        result = num1 | num2;
        System.out.println(result);
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num2)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));

//      1-3. XOR 연산자 (^)
        num1 = 5;
        num2 = 3;
        result = num1 ^ num2;
        System.out.println(result);
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num2)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));

//      1-4. 반전 연산자 (~)
        num1 = 5;
        result = ~num1;
        System.out.println(result);
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
        System.out.printf("%s\n", (Integer.toBinaryString(result)));


//      2. 비트 이동 연산자
        System.out.println("== 비트 이동 연산자 ==");
//      2-1. << 연산자
        int numA = 3;
        result = numA << 1;
        System.out.println(result);
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(numA)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));

//      2-2. >> 연산자
        numA = 3;
        result = numA >> 1;
        System.out.println(result);
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(numA)));
        System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));

//      2-3. >>> 연산자
        numA = -5;
        result = numA >> 1;
        System.out.println(result);
        System.out.printf("%s\n", (Integer.toBinaryString(numA)));
        System.out.printf("%s\n", (Integer.toBinaryString(result)));

        numA = -5;
        result = numA >>> 1;
        System.out.println(result);
        System.out.printf("%s\n", (Integer.toBinaryString(numA)));
        System.out.printf("%s\n", (Integer.toBinaryString(result)));

    }

}

출력 결과입니다.

== 비트 논리 연산자 ==
1
0101
0011
0001
7
0101
0011
0111
6
0101
0011
0110
-6
0101
11111111111111111111111111111010
== 비트 이동 연산자 ==
6
0011
0110
1
0011
0001
-3
11111111111111111111111111111011
11111111111111111111111111111101
2147483645
11111111111111111111111111111011
1111111111111111111111111111101
profile
IT학과 전과생

0개의 댓글