코드예시
public class ConditionTest {
public static void main(String[] args) {
int max;
System.out.println("두 수를 입력 받아서 더 큰 수를 출력하세요\n");
//수를 입력받을 수 있는 함수
Scanner scanner = new Scanner(System.in);
System.out.println("입력 1:");
int num1 = scanner.nextInt();
System.out.println("입력 2:");
int num2 = scanner.nextInt();
//두 값중 큰 값이 출력되도록 작동하는 조건 연산자
max = (num1 > num2)? num1 : num2;
System.out.println(max);
}
}
(num1 > num2) 의 결과가 true일 경우 num1이 출력되고 false인 경우 num2가 출력이 된다. 그러므로 두 값중 큰 값이 max에 들어가게 되는 원리입니다. 조건 연산자는 이런식의 활용이 가능합니다.
| 연산자 | 설명 | 예시 |
|---|---|---|
| ~ | 비트의 반전 | |
| & | 비트 단위 And | 1 & 1 인 경우만 1 반환 나머지는 0 |
| ㅣ | 비트 단위 Or | 0 ㅣ 0 인 경우만 0 반환 나머지는 1 |
| ^ | 비트 단위 XOR | 두 비트가 다른 경우만 1 반환 나머지는 0 |
| << | 왼쪽 shift | a<<1 -> 변수 a를 1비트 만큼 왼쪽으로 이동 |
| >> | 오른쪽 shift | a>>1 -> 변수 a를 1비트 만큼 오른쪽으로 이동 |
public class BitTest {
public static void main(String[] args) {
int num1 = 5; // 00000101
int num2 = 10; // 00001010
System.out.println(num1 | num2);
// 둘 중 하나라도 1이면 1 반환
System.out.println(num1 & num2);
// 둘 다 1이면 1 반환
System.out.println(num1 ^ num2);
// 둘이 다르면 1 반환
System.out.println(~num1);
// 1-> 0 , 0-> 1 음수로 출력된다.
System.out.println(num1 << 2);
// 비트를 옆으로 밀기 00010100, 비트를 하나 밀때마다 곱하기 2
System.out.println(num1);
System.out.println(num1 <<= 2);
// <<는 num1의 값이 바뀌지 않지만 <<=는 num1의 값이 바뀜
System.out.println(num1);
}
}
실행결과
15
0
15
-6
20
5
20
20
15는 비트로 표현한다면 00001111입니다. 즉, |를 활용한 경우 둘 중 하나여도 1이 반환되므로 00001111이 출력된다는 뜻입니다.
같은원리로 0은 00000000의 결과가 반환된 것이고, 20의 경우에는 00010100 의 결과가 반환되었다는 것을 나타냅니다.
비트의 반전을 만들어주는 ~ 연산자의 결과는 음수가 나온 것을 알 수 있습니다.
이것으로 Java의 연산자를 알아보았습니다!!