C 비트 쉬프트 - sonkoni/Koni-Wiki GitHub Wiki

순위    연산자                      활용          의미
--------------------------------------------------------------------
1.      ~    Complement       a :  1011 0110    보수
                             ~a :  0100 1001    1과 0을 서로 바꾼다.
             -------------------------------------------------------
2.      <<   Left-Shift       a :  1011 0110    비트 왼쪽 쉬프트
                                   ┌┌┼┼─┼┼┘┘    비트열을 왼쪽으로 이동시킨다.
                         a << 2 :  1101 1000    이동 후 빈 공간은 0 으로 채워짐
             -------------------------------------------------------
3.      >>   Right-Shift      a :  1011 0111    비트 오른쪽 쉬프트
                                   └└┼┼─┼┼┐┐    비트열을 오른쪽으로 이동시킨다.
                         a >> 2 :  0010 1101    이동 후 빈 공간은 0이나 부호비트로 채워짐⚠️

 연산 후 할당연산자
--------------------------------------
   <<=       a <<= 2;      a = a << 2;
   >>=       a >>= 2;      a = a >> 2;
#include <stdio.h>

int main(int argc, char *argv[]) {
    
    unsigned char num1 = 3;      // 0000 0011
    unsigned char num2 = 24;     // 0001 1000
    
    // 비트쉬프트
    printf("%u\n", num1 << 3);   // 0001 1000 ==> 23
    printf("%u\n", num2 >> 2);   // 0000 0110 ==> 6
    
    // 비트쉬프트 후 할당
    num1 <<= 3;
    num2 >>= 2;
    printf("%u\n", num1);   // 0001 1000 ==> 23
    printf("%u\n", num2);   // 0000 0110 ==> 6
    
    return 0;
}
⚠️ **GitHub.com Fallback** ⚠️