ava의 연산자들(3) - 조건, 비트 연산자

9280 단어 JAVA기초JAVA기초

조건연산자

  • 조건식이 true인 경우와 false인 경우에 각각 다른 결과를 만들어주는 연산자입니다.
  • if 조건문을 간단히 표현할 때 사용할 수 있습니다.
  • "조건식? 결과1; 결과2;" 형태로 표현된다. 참(true)일때 결과1이 수행됩니다.

코드예시


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에 들어가게 되는 원리입니다. 조건 연산자는 이런식의 활용이 가능합니다.

비트연산자

  • 대입연산자와 다른 연산자가 함께 사용됩니다.
  • 비트 켜기 / 끄기 : 특정 비트들만을 1 또는 0으로 설정해서 사용하고 싶을 때 사용됩니다.
    ex) 하위 3비트 중 1인 비트만을 꺼내고 싶다면 & 000111 과 같은 방식을 사용하면 됩니다. -> & 연산자는 밑에 표 참조.
연산자설명예시
~비트의 반전
&비트 단위 And1 & 1 인 경우만 1 반환 나머지는 0
비트 단위 Or0 ㅣ 0 인 경우만 0 반환 나머지는 1
^비트 단위 XOR두 비트가 다른 경우만 1 반환 나머지는 0
<<왼쪽 shifta<<1 -> 변수 a를 1비트 만큼 왼쪽으로 이동
>>오른쪽 shifta>>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의 연산자를 알아보았습니다!!

좋은 웹페이지 즐겨찾기