C언어 2의 거듭제곱 구하기

2018. 9. 16. 15:21개발노트

1
2
3
4
5
6
7
printf("2 의 거듭제곱 구하기 \n");
 
            printf("제곱할 수를 입력하세요. \n");
 
            scanf("%d", &zgop);
 
            printf("2의 %d제곱은 %d입니다.. \n",zgop, 1 << zgop);
cs


거듭제곱을 구하는 방법은 크게 두가지 입니다.

위의 코드는 쉬프트연산을 사용해서 거듭제곱을 나타냈습니다.


쉬프트 연산(Shift Operation)이란 비트를 몇 칸씩 옆으로 이동하는 연산을 말한다.


green >> 5;   -> green 변수의 값을 오른쪽으로 5비트 이동시킨다.


ex>

green : 0000001000100000

green >> 5 :  0000000000010001


반대로 << 는 왼쪽으로 비트를 이동한다


비트가 이동하면서 새롭게 채워지는 비트들은 0으로 채워진다.

하지만 음수의 값을 오른쪽으로 쉬프트 할 때는 1이 채워진다.



출처: http://hyeonstorage.tistory.com/307 [개발이 하고 싶어요]


다른 방법에는 코드는 길지만 for문을 돌며 n번 곱해주는 방법이 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
printf("X 의 Y제곱 구하기 \n");
 
            printf("제곱할 수를 입력하세요. \n");
 
            scanf("%d", &zgop);
 
            printf("제곱할 Y승을 입력하세요. \n");
 
            scanf("%d", &Y);
 
            for (a=0;a<Y;a++)
 
            {
 
                zgophap*=zgop;
 
            }
 
            printf("%d의 %d제곱은 %d입니다.. \n", zgop,Y, zgophap);

cs