[C++] 비트 단위 논리 연산자
평소에 비트단위연산자를 안써서 볼때마다 자꾸 까먹는데 기록을 해야겠다.
비트란?
우리는 자료형에서 char, short, int등등으로 나타내곤한다.
여기서 char는 1바이트인데 이 때 1바이트는 8비트라고 할 수 있다.
그럼 1비트는 무엇을까?
컴퓨터는 0아니면 1로 신호를 알아듣는데
그 때 1비트가 0이나 1로 표시된다.
이 때 1, 0처럼 나타낼 수 있는 진수는 2진수라 하는데
진법에 관한 건 나중에 포스팅하도록 하겠다.
비트 단위 논리 연산자
비트를 가지고 연산하는 것이 여러 개 있는데
그 중 오늘은 비트 단위 논리 연산자에 대해 쓰려고 한다.
1. | or
- or연산자
- 코딩을 할 때는 |
- 둘을 or연산할 때 1이 들어가있으면 무조건 1을 리턴
예1) 0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 1 예2) 00110011 00000000 | (or) -------------------- 00110011 예3) 00110011 11111111 | (or) -------------------- 11111111 1의 값이 있으면 어떤 값을 연산해도 사라지지 않는다. |
2. & and
- and연산자
- 코딩을 할 때는 &
- 둘 다 1이여야 1을 리턴하고 그 외에는 전부 0을 리턴
예1) 0 | 0 = 0 0 | 1 = 0 1 | 0 = 0 1 | 1 = 1 예2) 00110011 00000000 & (and) -------------------- 00000000 예3) 00110011 00000011 & (and) -------------------- 00000011 첫번째비트와 두번째비트에 1을 넣은 값으로 &연산을 해주면 그 값(1)이 뽑힌다. 주로 몇번째 비트값을 뽑아낼 때 자주 사용한다. |
3. ^ xor
- xor연산자
- 코딩을 할 때는 ^
- 두 수가 같으면 0, 다르면 1리턴
예) 0 | 0 = 0 0 | 1 = 1 1 | 0 = 1 1 | 1 = 0 예2) 00110011 00000000 ^ (xor) -------------------- 00110011 예2) 00110011 11111111 ^ (xor) -------------------- 11001100 같으면 0, 다르면 1, 암호화에 많이 쓰인다. |
4. ~ not
- not연산자
- 코딩을 할 때는 ~
- 논리연산자인 !와 다르고 비트를 뒤집는다.
예1) ~0 ----- -1 00000000 -> 11111111 11111111은 -1이다. (2의 보수방식) 예2) ~-1 ----- 0 11111111 -> 00000000 00000000은 0이다. |
정리
인자1 |
인자2 |
OR( | ) |
AND( & ) |
XOR( ^ ) |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
'Programming > C++_C#' 카테고리의 다른 글
memcpy함수 (0) | 2017.03.23 |
---|---|
[C++] 문자열 대문자를 소문자로, 소문자를 대문자로 (0) | 2017.03.20 |
[C++] 오버로딩함수 (0) | 2017.02.23 |
fopen, fclose, fseek함수 (0) | 2017.02.23 |
[C++] 가변인자함수 (0) | 2017.02.14 |