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); |