[C언어 코드업 문제풀이] CodeUp 1047 : [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기(설명)
코드업 1047번 정수 1개 입력받아 2배 곱해 출력하기 문제 풀이 해답입니다.
1. 문제 설명
정수 1개를 입력받아 2배 곱해 출력해보자.
참고
*2 의 값을 출력해도 되지만,
정수를 2배로 곱하거나 나누어 계산해 주는 비트단위시프트연산자 <<, >>를 이용한다.
2진수 형태로 저장되어 있는 값들을 왼쪽(<<)이나 오른쪽(>>)으로
지정한 비트 수만큼 밀어주면 2배씩 늘어나거나 반으로 줄어드는데,
왼쪽 비트시프트(<<)가 될 때에는 오른쪽에 0이 주어진 개수만큼 추가되고,
오른쪽 비트시프트(>>)가 될 때에는
왼쪽에 0(0 또는 양의 정수인 경우)이나 1(음의 정수인 경우)이 개수만큼 추가된다.
범위(32비트)를 넘어서 이동되는 비트는 삭제된다.
예시
int a=10;
printf("%d", a<<1); //10을 2배 한 값인 20 이 출력된다.
printf("%d", a>>1); //10을 반으로 나눈 값인 5 가 출력된다.
printf("%d", a<<2); //10을 4배 한 값인 40 이 출력된다.
printf("%d", a>>2); //10을 반으로 나눈 후 다시 반으로 나눈 값인 2 가 출력된다.
2. 입력
정수 한 개가 입력된다.
단, -1073741824 ~ +1073741823
3. 출력
2배 곱한 정수를 출력한다.
4. 입력 예시
1024
5. 출력 예시
2048
6. 문제 풀이
#include <stdio.h>
int main (void)
{
int num1,result;
scanf("%d", &num1);
result = num1<<1;
printf("%d",result);
return 0;
}
|
비트 쉬프트를 통해 값을 증가시키는 문제입니다.
0001 은 10진수로 1이지만 왼쪽으로 1칸 쉬프트 한다면 0010이 되므로 2가 됩니다.
2배라고 해서 2칸 쉬프트를 해버린다면 0100이 되어 4의 값이 나오게 됩니다.
'ET의 공부 > C언어 연습문제[ 코드업 ]' 카테고리의 다른 글
[C언어 코드업 문제풀이] CodeUp 1049 : [기초-비교연산] 두 정수 입력받아 비교하기1(설명) (0) | 2019.12.24 |
---|---|
[C언어 코드업 문제풀이] CodeUp 1048 : [기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기(설명) (0) | 2019.12.24 |
[C언어 코드업 문제풀이] CodeUp 1046 : [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기 (0) | 2019.12.24 |
[C언어 코드업 문제풀이] CodeUp 1045 : [기초-산술연산] 정수 2개 입력받아 자동 계산하기 (0) | 2019.12.24 |
[C언어 코드업 문제풀이] CodeUp 1044 : [기초-산술연산] 정수 1개 입력받아 1 더해 출력하기(설명) (0) | 2019.12.24 |