문제 분류 수업 진도 대회 채점현황 순위 질문게시판
게임
스도쿠 타이핑 리듬 타자게임 타이핑 테트리스 타이핑 인베이더 타이핑 지뢰찾기 8192 공룡게임 타이핑 플래피버드 랭킹
로그인

1045 : [기초-비트시프트 연산] 정수 1개 입력받아 2배 곱해 출력하기(설명)

•시간제한: 1.000 S •메모리제한: 128 MB •제출: 215 •통과: 147 •만든사람: suakii

1045 : [기초-비트시프트 연산] 정수 1개 입력받아 2배 곱해 출력하기(설명)

시간 1.000s · 메모리 128MB · 제출 215 · 정답 147

문제 설명

본 문제는 python 의 빠른 기초 학습을 위해 설계된 문제로서 python 코드 제출을 기준으로 설명되어 있습니다. 
------
정수 1개를 입력받아
2배 곱한 값을 출력해 보자.
참고
*2 를 계산해 출력해도 되지만,
2진수로 저장된 값을 왼쪽이나 오른쪽으로 1비트씩 이동시켜,
2배로 곱하거나, 2로 나눈 효과를 만들어주는 비트시프트 연산자 <<, >> 를 사용할 수도 있다. 
컴퓨터 내부에는 모든 데이터들이 2진수 형태로 저장되기 때문에,
그 값들을 왼쪽이나 오른쪽으로 1비트 만큼 밀어 이동시키면,
원래 값의 2배로 커지거나 1/2로 작아지게 된다.
왼쪽으로(<<) 비트 시프트가 되어 오른쪽에 새로운 비트가 추가될 때에는
무조건 0이 추가되고, 왼쪽으로 자릿수를 넘어가는 비트는 삭제된다.
오른쪽으로(>>) 비트 시프트가 되어 왼쪽에 새로운 비트가 추가될 때에는


가장 왼쪽에 있던 비트가 0인 경우에는 0이 추가되고, 가장 왼쪽에 있던 비트가 1인 경우에는 1이 추가된다. 그리고 가장 오른쪽에 있던 비트는 삭제된다.  예시 n = 10

print(n<<1) #10을 2배 한 값인 20이 출력된다.

print(n>>1) #10을 반으로 나눈 값인 5가 출력된다.

print(n<<2) #10을 4배 한 값인 40이 출력된다.

print(n>>2) #10을 4로 나눈 값인 2가 출력된다. 정수 10의 2진수 표현은  000 1010 이다.

10<<1 을 계산하면 000 10100 이 된다. 이 값은 10진수로 20이다.
10>>1 을 계산하면        000 ...     101 이 된다. 이 값은 10진수로 5이다.
n = 10 과 같이 키보드로 입력받지 않고 직접 작성해 넣은 코드에서,
숫자로 시작하는 단어(식별자, identifier)는 자동으로 수로 인식된다.  
n = 10 에서 10은 10진수 정숫값으로 인식된다.
변수 n 에 문자열을 저장하고 싶다면, n = "10" 또는 n = '10' 으로 작성해 넣으면 되고,
n = 10.0 으로 작성해 넣으면 자동으로 실숫값으로 저장된다.
n = 0o10 으로 작성해 넣으면 8진수(octal) 10으로 인식되어 10진수 8이 저장되고,
n = 0xf 나 n = 0XF 으로 작성해 넣으면 16진수(hexadecimal) F로 인식되어 10진수 15로 저장된다.
** python 에서 실숫값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다.
(실숫값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.)
[f-string 출력 참고]
print(f"{n << 1}")

입력 설명

정수 1개가 입력된다.
(단, $-1073741824 \sim 1073741823$)

출력 설명

2배 곱한 값을 출력한다.

입력 예시
COPY
복사되었습니다!

1024

출력 예시
COPY
복사되었습니다!

2048

도움

기초100제(py) v0.85 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.

[원작자: 전현석, 최문성(확인), 이준용(확인), 김지혜(그림) (2020)]

출처/분류

NOTICE  —  BFStudy OJ 정보샘
애들아, 문제 많이 풀고 게임 잠깐 하는거지?
— 정보샘