C/윤성우 열혈 C 프로그래밍
[열혈 C] 4.3 비트 연산자
pypanda
2020. 11. 7. 23:09
728x90
& 연산자 : 비트단위 AND
두 개의 비트가 모두 1일 때 1을 반환한다.
0 & 0 = 0
1 & 0 = 0
1 & 1 = 1
^ 연산자 : 비트단위 XOR
두 개의 비트가 다를 경우 1을 반환한다.
0^0 : 0
0^1 : 1
| 연산자 : 비트단위 OR
둘 중 하나라도 1이면 1을 반환한다.
0|0 : 0
0|1 : 1
1|1 : 1
~ 연산자(보수연산) : 비트단위 NOT
비트를 0 과 1 사이 반전시킨다. 부호도 반전시킨다.
# include <stdio.h>
int main(void)
{
int a = -5;
int b;
b = ~a+1; //a의 보수 구하기
printf("%d", b); //b = 5
return 0;
}
<<(>>) 연산자 : 비트의 왼쪽(오른쪽) 이동(shift)
8<<2 : 정수 8의 비트 열을 2칸씩 왼쪽으로 이동
비트 열을 왼쪽으로 1칸씩 이동시킬 때마다 정수의 값은 두배가 된다.
오른쪽으로 1칸씩 이동시킬 때마다 1/2 값이 된다.
# include <stdio.h>
int main(void)
{
int num = 3;
num = num << 3; // 비트를 왼쪽으로 세칸 이동 = 2^3 인 곱하기 8
num = num >> 2; // 비트를 오른쪽으로 두칸 이동 = 2^2 인 나누기 4
printf("%d", num);
return 0;
}