Java 언어를 이해하는데 있어 연산자는 기본적인 도구입니다. 이 글에서는 증감 연산자, 누적 대입 연산자, 그리고 비트 연산자에 대한 개념과 사용 방법에 대해 자세히 알아보겠습니다.
증감 연산자
Java에서는 증감 연산자를 이용해 변수의 값을 증가 또는 감소시킬 수 있습니다. 이는 단항 연산자로, 변수 앞이나 뒤에 위치할 수 있습니다. 그러나 연산자의 위치에 따라 동작 방식이 다르므로 주의해야 합니다.
'++'는 1을 증가시키는 연산이고, '--'는 1을 감소시키는 연산입니다. 연산자가 변수 앞에 오는 경우 '전위 연산자'라 하며, 변수 값이 먼저 변하고 이후의 연산이 진행됩니다.
int x = 5;
System.out.println(++x); // 출력 결과: 6
이 코드에서는 x의 값을 먼저 증가시킨 후 출력을 수행하므로, 결과는 6입니다.
반면 연산자가 변수 뒤에 오는 경우 '후위 연산자'라 하며, 다른 연산을 먼저 수행한 후 마지막에 변수 값을 변경합니다.
int x = 5;
System.out.println(x++); // 출력 결과: 5
System.out.println(x); // 출력 결과: 6
처음 출력에서는 x++가 출력 연산을 수행한 후에 x 값을 증가시키므로, 처음 출력 결과는 5입니다. 그 다음에 출력을 하면 이전에 증가된 값인 6이 출력됩니다.
누적 대입 연산자
누적 대입 연산자는 특정 변수에 대한 연산 결과를 다시 그 변수에 대입하는데 사용됩니다. 기본적인 누적 대입 연산자로는 +=, -=, *=, /=, %= 등이 있습니다.
int num = 5;
num += 2; // num = num + 2와 동일하며, num의 최종 값은 7입니다.
num -= 2; // num = num - 2와 동일하며, num의 최종 값은 3입니다.
num *= 2; // num = num * 2와 동일하며, num의 최종 값은 10입니다.
이와 같이 누적 대입 연산자를 이용하면 복잡한 수식을 간결하게 표현할 수 있습니다.
비트 연산자
비트 연산자는 정수를 이진수로 표현했을 때 각각의 비트에 대해 연산을 수행합니다. 이때 사용되는 비트 연산자들은 AND(&), OR(|), XOR(^), NOT(~), 왼쪽 시프트(<<), 오른쪽 시프트(>>) 등이 있습니다.
- AND 연산자(&)
AND 연산자는 두 비트 모두 1인 경우에만 결과가 1이 됩니다. 그 외의 경우에는 모두 0입니다.
- OR 연산자(|)
OR 연산자는 두 비트 중 하나라도 1인 경우 결과가 1이 됩니다. 두 비트 모두 0인 경우에만 결과가 0입니다.
- 왼쪽 시프트 연산자(<<)
왼쪽 시프트 연산자는 피연산자의 모든 비트를 왼쪽으로 이동시키고, 오른쪽에는 0을 채워넣습니다.
- 오른쪽 시프트 연산자(>>)
오른쪽 시프트 연산자는 피연산자의 모든 비트를 오른쪽으로 이동시키고, 왼쪽에는 가장 왼쪽의 비트(시그니처 비트)로 채워넣습니다.
10진수 28을 2진수로 변환
10진수 25를 2진수로 변환
✔ 1을 true, 0을 false
32 16 8 4 2 1
1 1 1 0 0 (28)
& 1 1 0 0 1 (25)
----------------------------------------------------------
1 1 0 0 0 (24)
28 & 25 = 24
32 16 8 4 2 1
1 1 1 0 0 (28)
| 1 1 0 0 1 (25)
----------------------------------------------------------
1 1 1 0 1 (29)
28 | 25 = 29
64 32 16 8 4 2 1
<<2 1 1 1 0 0 (28)
-----------------------------------------------------------------
1 1 1 0 0 0 0 (112)
28 << 2 = 112
64 32 16 8 4 2 1
>>2 1 1 1 0 0 (28)
-----------------------------------------------------------------
1 1 1 (7)
28 >> 2 = 7
아래는 자바내 비트 연산자 출력 입니다.
int var1 = 28, var2 = 25, var3 = 2;
System.out.println("var1 & var2 : " + (var1 & var2));
System.out.println("var1 | var2 : " + (var1 | var2));
System.out.println("var1 << var3 : " + (var1 << var3));
System.out.println("var1 >> var3 : " + (var1 >> var3));
var1 & var2 : 24
var1 | var2 : 29
var1 << var3 : 112
var1 >> var3 : 7
비트 연산자는 성능 최적화, 플래그 관리, 암호화 등 다양한 곳에서 활용되며, 컴퓨터의 내부 동작 방식을 이해하는 데 도움이 됩니다.
이처럼, Java에서 제공하는 다양한 연산자들은 프로그래밍을 보다 편리하고 강력하게 만듭니다. 다음 포스트에서는 더 많은 연산자와 그 사용법에 대해 살펴보겠습니다.
'개발 > Java' 카테고리의 다른 글
Java에서 랜덤값 생성하기: Math 클래스와 Random 클래스 (0) | 2023.07.12 |
---|---|
Java 프로그래밍 기초: 입력(Scanner 클래스) (0) | 2023.07.12 |
Java 프로그래밍 기초: 연산자(Operator) - 1 (0) | 2023.07.12 |
Java 프로그래밍 기초: 데이터 타입과 그 종류 (0) | 2023.07.11 |
Java 프로그래밍 기초: 변수(Variable) (0) | 2023.07.11 |