순위 연산자 활용 의미
--------------------------------------------------------------------
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;
}