Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 앱 인벤터 2
- C++
- cmath
- 사용자 입력
- 프로그래밍 열풍
- 앱 스토어 4월
- 모바일 무료 게임 순위
- output
- 연산자
- 사용자 출력
- Python Basic
- 앱 인벤터 예시
- 비트 논리 연산자
- Conditional operator
- User Input Output
- user function
- Python
- ISSACMin
- input
- 파이썬
- 앱 인벤터
- C++ Basic
- Logic Operator
- help 함수
- 파이썬을 중심으로
- using namespace std
- Operator
- 앱인벤터
- 관계 연산자
- C++ 연습예제
Archives
- Today
- Total
ISSAC.Min
[C++ Basic] 연산자(Operator) / 비트 연산자(Bitwise Operator) 본문
Programming Language/C++ Basic
[C++ Basic] 연산자(Operator) / 비트 연산자(Bitwise Operator)
ISSAC.M 2019. 4. 10. 22:08반응형
1. 비트 연산자(Bitwise Operator) |
비트 연산자(Bitwise Operator)는 논리 연산자랑 비슷한 비트 논리 연산자와 비트를 이동시킬 수 있는 시프트 연산자로 나눌 수 있다. 사실 C/C++를 통한 디바이스를 직접 제어하는 것이 아니라면 비트 연산자를 크게 쓸일은 없다고 볼 수 있다. 필자 또한 비트 연산자를 써본적은 학교 강의 실습시간이 전부인 것 같지만 연산자고 크게 어려운 내용은 없으니 기억해 놓자.
비트 논리 연산자는 논리 연산자와 비슷하게 &, |, ^, ~ 등을 사용하며 아래와 같다.
연 산 자 |
설 명 |
& |
같은 위치간 비트가 모두 1일때만 1을 반환한다. |
| |
같은 위치간 비트가 모두 0일때만 0을 반환한다. |
^ |
같은 위치간 비트가 다를 경우 1을 반환한다. |
~ |
비트의 수를 반전한다. |
위의 설명만 본다면 이해가 어려울 것이다. 아래의 예시를 보자.
(int 자료형은 표현하기 크기 때문에 뒷부분에 필요한 부분만 명시)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> using namespace std; int main() { // num1의 2진수값은 0000000000001010 // num2의 2진수값은 0000000000000110 short num1 = 10, num2 = 6; // num3값이 num1 & num2 // 두 수의 각 자리의 비트값이 모두 1일때만 1을 반환 // 그러므로 num3는 2진수 값으로 0000000000000010 // 2진수 0000000000000010은 10진수로 변환하면 2 short num3 = num1 & num2; // 2 cout << num3 << endl; return 0; } | cs |
<비트 논리 연산자 &의 예시>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> using namespace std; int main() { // num1의 2진수값은 0000000000001010 // num2의 2진수값은 0000000000000110 short num1 = 10, num2 = 6; // num3값이 num1 | num2 // 두 수의 각 자리의 비트값이 모두 0일때만 0을 반환 // 그러므로 num3는 2진수 값으로 0000000000001110 // 2진수 0000000000001110은 10진수로 변환하면 14 short num3 = num1 | num2; // 14 cout << num3 << endl; return 0; } | cs |
<비트 논리 연산자 |의 예시>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> using namespace std; int main() { // num1의 2진수값은 0000000000001010 // num2의 2진수값은 0000000000000110 int num1 = 10, num2 = 6; // num3값이 num1 ^ num2 // 두 수의 각 자리의 비트값이 다를때 1을 반환 // 그러므로 num3는 2진수 값으로 0000000000001100 // 2진수 0000000000001100은 10진수로 변환하면 12 int num3 = num1 ^ num2; // 12 cout << num3 << endl; return 0; } | cs |
<비트 논리 연산자 ^의 예시>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <iostream> using namespace std; int main() { // num1의 2진수 값은 0000000000001010 short num1 = 10; // num1의 반전은 0000000011110101 // 0000000011110101을 10진수로 변환하면 -11 short num2 = ~num1; // -11 cout << num2 << endl; return 0; } | cs |
<비트 논리 연산자 ~의 예시>
시프트 연산자는 >>, <<가 있으며 설명은 아래와 같다.
연 산 자 |
설 명 |
<< |
지정한 수만큼 왼쪽으로 비트들을 이동시킨다. |
>> |
지정한 수만큼 오른쪽으로 비트들을 이동시킨다. |
시프트 연산자는 Shift 즉 옮기다는 뜻을 가진 연산자이며 방향에 따라 왼쪽이나 오른쪽으로 비트를 이동하는 것이다. 예시를 들어보면 아래와 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <iostream> using namespace std; int main() { // num1의 2진수 값은 0000000000001010 short num1 = 10; // num2는 num1의 비트를 왼쪽으로 한칸 이동한다. // num2의 2진수 값은 0000000000010100 // 이동하고 빈 곳은 0으로 대체되고 초과되는 비트는 사라진다. // 0000000000010100를 10진수로 변환하게 된다면 20 short num2 = num1 << 1; // 20 cout << num2 << endl; return 0; } | cs |
<시프트 연산자 <<의 예시, >>도 동일하다.>
2. 실습 |
반응형
'Programming Language > C++ Basic' 카테고리의 다른 글
[C++ Basic] Lab #1 실습예제 (연산자(Operator ~ User Input,Output) (0) | 2019.04.11 |
---|---|
[C++ Basic] 사용자 입력(Input) / 출력(Output)(cout, cin Func) (0) | 2019.04.11 |
[C++ Basic] 연산자(Operator) / 조건 연산자(Conditional Operator) (0) | 2019.04.10 |
[C++ Basic] 연산자(Operator) / 논리 연산자(Logic Operator) (0) | 2019.04.05 |
[C++ Basic] 연산자(Operator) / 관계 연산자(Relational Operator) (0) | 2019.04.05 |