22.2 비트 NOT 연산자 사용하기

이번에는 ~ 연산자를 사용해보겠습니다.

  • ~x

bitwise_not_operator.c

#include <stdio.h>

int main()
{
    unsigned char num1 = 162;    // 162: 1010 0010
    unsigned char num2;

    num2 = ~num1;

    printf("%u\n", num2);    // 93: 0101 1101: num1의 비트 값을 뒤집음

    return 0;
}

실행 결과

93

~ 연산자는 비트 NOT 연산자입니다. 간단하게 0110으로 바꾸며 "비트를 뒤집는다" 또는 "비트 반전"이라고 말합니다.

표 22‑3 ~ 연산 결과
연산자 비트 결과
~ 0 1
1 0

1010 0010의 각 비트를 뒤집으면 0101 1101이 되고, 10진수로 93입니다. 즉, ~162는 93입니다.

1010 0010(162)
_________ ~
0101 1101(93)
참고 | unsigned char 자료형을 사용하는 이유는?

unsigned char는 부호 없는 정수이며 1바이트 크기입니다. 비트 연산으로 인해 부호 비트가 영향을 받지 않도록 부호 없는 자료형을 사용하였습니다.