23.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으로 바꾸며 "비트를 뒤집는다" 또는 "비트 반전"이라고 말합니다.

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

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

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

unsigned char는 부호 없는 정수이며 1바이트 크기입니다. 비트 연산으로 인해 부호 비트가 영향을 받지 않도록 부호 없는 자료형을 사용하였습니다. 비트 연산과 부호 비트에 대해서는 'Unit 24 비트 연산자 응용하기'에서 설명하겠습니다.