&, |, ^ , ~
C언어에서는 비트 단위로 논리 연산을 수행하는 비트 연산을 제공하고 있어요.
비트 연산의 피연산자는 정수 형식이 올 수 있어요.
이항 연산자 &는 비트 단위로 논리곱 연산을 수행하죠.
예를 들어 6&5를 하면 6은 이진수로 110이고 5는 이진수로 101이므로 6&5의 연산 결과는 이진수 100이고 10진수 4예요.
이항 연산자 | 는 비트 단위로 논리합 연산을 수행하죠.
예를 들어 6|5의 연산 결과는 이진수 111 이고 10진수 7이예요.
이항 연산자 ^는 비트 단위로 상호 배타 논리 연산을 수행하죠.
즉 같은 자리의 비트가 서로 다르면 1, 같으면 0 이예요.
예를 들어 6^5의 연산 결과는 이진수 011 이고 10진수 3이예요.
단항 연산자 ~는 1인 자리는 0으로 0인 자리는 1로 바꾸는 연산을 수행합니다.
◈ 비트 연산
#include <stdio.h>
int main()
{
int i = 0x11FF0000;
printf("6&5: %d \n",6&5);
printf("6|5: %d \n",6|5);
printf("6^5: %d \n",6^5);
printf("~11FF0000 : %X \n", ~i); //쉽게 확인할 수 있게 16진수로 표현
return 0;
}
◈ 실행 결과
6&5: 4
6|5: 7
6^5: 3
~11FF0000 : EE00FFFF
◈ 기본연습
다음 코드를 실행하였을 때 출력 결과를 예측하고 이유를 설명하세요.
#include <stdio.h>
int main()
{
int a = 0x12345678;
int b = 0xFFFF0000;
int c = 0x0000FFFF;
printf("%#X\n",a&b);//16진수로 출력하고 앞에 0X도 표시
printf("%#X\n",a&c);
return 0;
}
'언어 자료구조 알고리즘 > 디딤돌 C언어' 카테고리의 다른 글
37. 기타 연산자 (0) | 2016.01.01 |
---|---|
36. 증감 연산자 (0) | 2016.01.01 |
35. 대입 연산자 (0) | 2016.01.01 |
34. 쉬프트 연산자 (0) | 2016.01.01 |
33. 비트 연산자 ^를 이용한 암호화 (0) | 2016.01.01 |
31. 비교 연산자 (0) | 2016.01.01 |
30. 논리 연산자 (0) | 2016.01.01 |
[디딤돌 C언어] 29. 산술 연산자 (0) | 2016.01.01 |
[디딤돌 C언어] 28. 정리하기 (표준 입출력 개요) (0) | 2016.01.01 |
[디딤돌 C언어] 27. getchar, gets, gets_s 함수 (0) | 2016.01.01 |