bitwise - not 연산자 ~ 는 단항 연산자로 각 비트를 반전(toggle)시킨다. 즉 1은 0으로, 0은 1로 바꾼다.
표 3.5.4 비트not연산
x
|
~x
|
0
|
1
|
1
|
0
|
이 연산은 전체 비트에 대해서 수행된다. 예를 들면 다음과 같다.
unsigned char uca = 0b10101100, ucb;
ucb = ~uca; // 0b01010011 이 대입된다.
|
다음 예제는 위의 네 가지 비트 연산(&, |, ^, ~)을 수행한 결과를 16진수로 보여주는 예제이다. 전 절에서도 소개한 바와 같이 printf()함수에서 정수를 16진수로 표시하는 서식 문자는 ‘%x’이다. 연습을 위해서 16진수 하나하나를 이진수로 바꾼 다음 손으로 연산을 수행해 보기를 권한다.
#include <stdio.h>typedef unsigned char uchar;int main(void){uchar ucA1 = 0xfa;uchar ucB1 = 0x3a;uchar ucC1 = 0xc1, ucC2;uchar ucD1 = 0xbb, ucD2 = 0xa8, ucD3;ucC2 = ~ucC1;ucD3 = ucD1^ucD2;printf("0x%x & 0xf0 = 0x%x\n", ucA1, ucA1 & 0xf0);printf("0x%x | 0x8c = 0x%x\n", ucB1, ucB1 | 0x8c);printf("~0x%x = 0x%x\n", ucC1, ucC2);printf("0x%x ^ 0x%x = 0x%x\n", ucD1, ucD2, ucD3);} |
0xfa & 0xf0 = 0xf00x3a | 0x8c = 0xbe~0xc1 = 0x3e0xbb ^ 0xa8 = 0x13 |
여기에서 typedef 명령에 의해서 unsigned char 형은 uchar 로 줄여서 사용할 수 있다. 즉, main()함수 내의 uchar 은 unsigned char 와 같다.
C++ 강좌 전체 목록 >>>
댓글 없음:
댓글 쓰기