본문
비트연산
// 비트 연산
#include <stdio.h>
int main() {
int a = 0xAF; // 10100101
int b = 0xB5; // 10110101
printf("a & b : %x \n", a & b); // a & b = 10100101 : AND 연산
printf("a | b : %x \n", a | b); // a | b = 10111111 : OR 연산
printf("a ^ b : %x \n", a ^ b); // a ^ b = 00011010 : NOR 연산 - 서로 다르면 1
printf("~a : %x \n", ~a ); // ~a = 1....1 01010000 : 반전 연산- 비트가 그대로 반전됨.
printf("a << 2 : %x \n", a << 2); // a << 2 = 1010111100
// 쉬프트 연산 - 왼쪽으로 2자리 이동, 이동후 오른쪽 끝 자리는 0으로 채움
printf("b >> 3 : %x \n", b >> 3); // b >> 3 = 00010110
// 쉬프트 연산 - 오른쪽으로 3자리 이동, 오른쪽에 갈 자리가 없으면 그 숫자는 버려진다.
// 왼쪽 빈자리는 원래 왼쪽 끝에 있던 숫자로 채워진다.
// b의 맨앞에 1이 있는거 같지만, int 값이므로 4바이트로 앞의 빈자리인 0 값으로 채워진다.
// b가 00000000 00000000 00000000 10110101 이므로 맨 왼쪽의 비트는 0 이다.
return 0;
}
'프로그래밍 > C' 카테고리의 다른 글
논리부정 예시 (0) | 2021.10.05 |
---|---|
printf, scanf 입출력 포맷 정리 (0) | 2021.10.03 |
산술연산 연산자 (0) | 2021.10.03 |
전위형, 후위형 (0) | 2021.10.03 |
printf 함수의 출력형식 (0) | 2021.10.03 |