문제 번호 1080 --[기초-비트시프트연산] 정수 한 개 입력받아 2 곱해 출력하기

1080: [기초-비트시프트연산] 정수 한 개 입력받아 2 곱해 출력하기

시간 제한: 1 Sec  메모리 제한: 128 MB
제출: 506  해결 문제 수: 445
[제출][채점상황][게시판][:]

문제 설명

정수 한 개를 입력했을 때 2를 곱해 출력하는 프로그램을 작성해보자.

(단, -1073741824 ~ 1073741823)

입력

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

출력

입력 받은 정수 * 2의 계산 결과가 출력된다.

입력예시

1024

출력예시

2048

도움말

정수*2 의 결과를 출력해도 되지만,

비트시프트연산자 <<, >> 는 정수를 2배로 곱하거나 나누어 계산해준다.



2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로 지정한 비트만큼 이동시켜 2배 만큼 늘어나거나 반으로 줄어드는데


예를 들어 6(십진수) -> 110(2진수)일 경우(이진법기수법참조)



왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0 이 주어진 수 만큼 추가되고,


6<<1 은 110를 왼쪽으로 한자리 이동해서 끝에 0을 추가하여 1100이 된다. 따라서  12(10진수)의 값이 된다.




오른쪽 비트시프트(>>)가 될 때에는 왼쪽에 0(0 또는 양의 정수인 경우) 이나 1(음의 정수인 경우)이 주어진 수 만큼 추가된다.


6>>1은 110에서 오른쪽으로 한자리 이동해서 끝에 0이 사라진다. 따라서 11이되고 3(10진수)이된다.



범위(32비트)를 넘어가 이동되는 비트는 삭제된다.



[예시]

int a=10;

printf("%d", a<<1); //20 이 출력된다.

printf("%d", a>>1); //5 가 출력된다.

printf("%d", a<<2); //40 이 출력된다.

printf("%d", a>>2); //2 가 출력된다.


출처

[제출][채점상황]