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;
}
⚠️ **GitHub.com Fallback** ⚠️