본문 바로가기

ETC/복습

[복습_JAVA] 05

● 연산자의 우선순위

- 최우선 연산자

- 단항 연산자

- 산술 연산자

- 쉬프트 연산자

- 관계 연산자

- 논리 연산자

- 삼항 연산자

- 대입 연산자

 

 

 

● 비트 연산

1. 논리 연산자

- & (AND, 논리곱) : A & B, 두 비트 모두 1이면 1

- | (OR, 논리합) : A | B, 두 비트 중 하나라도 1이면 1

- ^ (XOR, 배타논리합) : A ^ B, 두 비트가 서로 다르면 1

 

 

2. 단항 연산자

- ~ (NOT, 논리부정) : ~A, 0을 1로, 1을 0으로 변경, ~a = -a - 1

 

 부호비트

- 비트의 최상위 비트를 부호비트로 사용하고, 0은 양수, 1은 음수를 의미한다.

 

 

3. 쉬프트 연산자

- << (LEFT SHIFT, 좌쉬프트) : A << B, A를 B만큼 좌로 이동

- >> (RIGHT SHIFT, 우쉬프트) : A >> B, A를 B만큼 우로 이동

※ 비트가 넘어가면 잘리고, 빈 칸은 0으로 채워진다.(음수는 1로 채워진다.)

 

 


 

실습(연산자)

1. 논리 연산자

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

		System.out.println(10 & 11);
		System.out.println(10 | 11);
		System.out.println(10 ^ 11);
	
	}
}

 

결과

 

 

 

2. 단항 연산자

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

		System.out.println(~10);  // (-10) - 1
	
	}
}

 

결과

 

 

 

3. 쉬프트 연산자

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

		System.out.println(10 << 1);  // 1010 << 1 : 0001 0100(20)
		System.out.println(10 >> 1);  // 1010 >> 1 : 0101(5)

	}
}

 

결과

 

 

실습(CodeUp)

​​​1. 1047

문제 설명

정수 1개를 입력받아 2배 곱해 출력해보자.

입력

정수 한 개가 입력된다.
단, -1073741824 ~ +1073741823

출력

2배 곱한 정수를 출력한다.

내 풀이

import java.util.Scanner;

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

		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		System.out.println(a << 1);
		
	}
}
 

 


​제곱은 정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용한다.


 

 

 

'ETC > 복습' 카테고리의 다른 글

[복습_JAVA] 07  (0) 2022.08.12
[복습_JAVA] 06  (0) 2022.08.10
[복습_JAVA] 04  (0) 2022.08.07
[복습_JAVA] 03  (0) 2022.08.06
[복습_JAVA] 02  (0) 2022.08.04