C 비트 쉬프트 거듭제곱 - sonkoni/Koni-Wiki GitHub Wiki
왼쪽 비트쉬프트는 2의 거듭제곱으로 곱해진다.
#include <stdio.h>
int main(int argc, char *argv[]) {
unsigned char num1 = 1;
printf("%u\n", num1 << 1); // 1 x 2¹ = 2
printf("%u\n", num1 << 2); // 1 x 2² = 4
printf("%u\n", num1 << 3); // 1 x 2³ = 8
printf("%u\n", num1 << 4); // 1 x 2⁴ = 16
printf("%u\n", num1 << 5); // 1 x 2⁵ = 32
printf("-----------\n");
unsigned char num2 = 7;
printf("%u\n", num2 << 1); // 7 x 2¹ = 14
printf("%u\n", num2 << 2); // 7 x 2² = 28
printf("%u\n", num2 << 3); // 7 x 2³ = 56
printf("%u\n", num2 << 4); // 7 x 2⁴ = 112
printf("%u\n", num2 << 5); // 7 x 2⁵ = 224
return 0;
}오른쪽 비트쉬프트 연산은 2의 거듭제곱으로 나눠진다.
#include <stdio.h>
int main(int argc, char *argv[]) {
unsigned char num1 = 32;
printf("%u\n", num1 >> 1); // 32 ÷ 2¹ = 16 (몫)
printf("%u\n", num1 >> 2); // 32 ÷ 2² = 8 (몫)
printf("%u\n", num1 >> 3); // 32 ÷ 2³ = 4 (몫)
printf("%u\n", num1 >> 4); // 32 ÷ 2⁴ = 2 (몫)
printf("%u\n", num1 >> 5); // 32 ÷ 2⁵ = 1 (몫)
printf("%u\n", num1 >> 6); // 32 ÷ 2⁵ = 0 (몫)
printf("-----------\n");
unsigned char num2 = 224;
printf("%u\n", num2 >> 1); // 224 ÷ 2¹ = 112 (몫)
printf("%u\n", num2 >> 2); // 224 ÷ 2² = 56 (몫)
printf("%u\n", num2 >> 3); // 224 ÷ 2³ = 28 (몫)
printf("%u\n", num2 >> 4); // 224 ÷ 2⁴ = 14 (몫)
printf("%u\n", num2 >> 5); // 224 ÷ 2⁵ = 7 (몫)
printf("%u\n", num2 >> 6); // 224 ÷ 2⁶ = 3 (몫)
printf("%u\n", num2 >> 7); // 224 ÷ 2⁷ = 1 (몫)
printf("%u\n", num2 >> 8); // 224 ÷ 2⁸ = 0 (몫)
return 0;
}