Algorithm Study/Java

[코드업 자바] # 1048 [기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기

728x90
반응형

코드업 자바

# 1048 [기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기

 

링크 : https://codeup.kr/problem.php?id=1048

 

[기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기(설명)

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

codeup.kr

 

 

풀이

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

//        System.out.println(a>>b);
        System.out.println(a * (int) Math.pow(2, b));
        }
    }

 

  • 비트 시프트 연산
    • 2진법을 생각하면 이해할 수 있다
    • << : 왼쪽으로 비트를 이동, >> : 오른쪽으로 비트를 이동
    • 1 << 3 의 경우, 1을 이진법 상에서 왼쪽 3번째 칸으로 밀어낸다
    • 따라서 2^3 인 8이 나온다
    cf. 이해하고 일단 넘어간다. 필요할 때 복습하거나 좀더 공부해보도록 하자
  • 일반적인 거듭제곱은 Math.pow(n, m)을 사용한다 
    • n의 m제곱 만큼의 값을 도출
    • 계산에 의한 새로운 값이기 때문에 (int)와 같이 형태를 정해줘야 한다