| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 증감연산자
- 2차원배열
- 자바코딩
- 클래스선언
- C++코딩
- 비트연산자
- 프로그래밍
- 포인터연산자
- 코딩독학
- 자바
- 코딩
- 고정소수점
- 부동소수점
- 자바코드
- Java
- 1차원배열
- 조건문
- C++
- 기초코딩
- 포인터
- 자바클래스
- 코딩기초
- 제어문
- 산술연산자
- 변수
- 메서드오버로딩
- 자바메서드오버로딩
- C++상수
- this참조변수
- 반복문
- Today
- Total
지식아일랜드
코딩 기초 14편 _ C++ 비트 연산자(Bitwise operator)의 종류와 예제 본문
안녕하세요?
지식아일랜드의 모르는게 없는 지식인 입니다.
오늘은 C++ 코딩 중 비트 연산자(Bitwise operator)에 대해 설명드리겠습니다.

비트 연산자의 종류에는 AND(&), OR(I), XOR(^), NOT(~), left shift(<<), right shift(>>) 가 있으며
각각의 역할에 대해 예제와 함께 설명드리겠습니다.
비트 연산자는 0과 1로 이루어진 비트(bit)를 조작하는 연산자 입니다.
C++에는 다음과 같은 비트 연산자가 있습니다.
비트 AND(&) 연산자
비트 AND(&) 연산자는 두 개의 비트가 모두 1일 때 결과 비트가 1이 됩니다.
아래는 비트 AND 연산자의 예시 코드 입니다.
unsigned int a = 60; // 0011 1100
unsigned int b = 13; // 0000 1101
unsigned int c = a & b; // 0000 1100
비트 OR(I) 연산자
비트 OR(I) 연산자는 두 개의 비트 중 하나 이상이 1일 때 결과 비트가 1이 됩니다.
아래는 비트 OR 연산자의 예시 코드 입니다.
unsigned int a = 60; // 0011 1100
unsigned int b = 13; // 0000 1101
unsigned int c = a I B; // 0011 1101
비트 XOR(^) 연산자
비트 XOR(^) 연산자는 두 개의 비트 중 하나만 1일 때 결과 비트가 1이 됩니다.
아래는 비트 XOR 연산자의 예시 코드 입니다.
unsigned int a = 60; // 0011 1100
unsigned int b = 13; // 0000 1101
unsigned int c = a ^ b; // 0011 0001
비트 NOT(~) 연산자
비트 NOT(~) 연산자는 단일 비트의 값을 반전시킵니다. 0은 1로, 1은 0으로 바뀝니다.
아래는 비트 NOT 연산자의 예시 코드 입니다.
unsigned int a = 60; // 0011 1100
unsigned int b = ~a; // 1100 0011
왼쪽 shift(<<) 연산자
왼쪽 shift(<<) 연산자는 모든 비트를 지정된 수만큼 왼쪽으로 이동시킵니다.
이동시킨 비트는 0으로 채워집니다.
아래는 왼쪽 시프트 연산자의 예시 코드 입니다.
#include <iostream>
using namespace std;
int main() {
int num = 7; // 7의 이진수 표현: 00000111
int shiftAmount = 2; // 왼쪽으로 이동할 비트 수
// 왼쪽으로 2비트 이동한 결과 출력
cout << (num << shiftAmount) << endl;
return 0;
}
위 코드는 'num' 변수를 2진수로 표현하고, 그 값을 'shiftAmount' 변수의 값만큼 왼쪽으로 이동시킨 결과를 출력하는 코드입니다.
'<<' 연산자는 왼쪽으로 비트를 이동하는 연산자입니다.
예를 들어, 'num' 변수가 7일 경우, 이진수로는 '00000111' 입니다.
이진수에서 왼쪽으로 2비트 이동하면 '00011100'이 됩니다.
이 값을 10진수로 표현하면 28입니다.
따라서 위 코드를 실행하면, '28'이 출력됩니다.
이진수에서 비트를 왼쪽으로 이동시키면, 값이 2의 거듭제곱 배가 됩니다.
위 코드에서 'shiftAmount' 변수의 값이 2이므로, 'num' 변수의 값인 7이 2의 제곱인 4배가 되어 28이 출력됩니다.
이처럼, '<<' 연산자는 비트를 왼쪽으로 이동시키는 연산자이며, 값에 2의 거듭제곱 배가 된다는 특징이 있습니다.
오른쪽 shift(>>) 연산자
오른쪽 shift(>>) 연산자는 모든 비트를 지정된 수만큼 오른쪽으로 이동시킵니다.
이동시킨 비트는 부호 비트와 동일합니다.
아래는 오른쪽 시프트 연산자의 예시 코드 입니다.
#include <iostream>
using namespace std;
int main() {
int num = 8; // 2진수: 00001000
int shift = 2;
int result = num >> shift; // 비트 오른쪽 시프트 연산
cout << "숫자 " << num << "을 " << shift << "만큼 오른쪽으로 시프트하면 " <<
return 0;
}
위 코드에서는 int형 변수 'num'을 8로 초기화하고, 'shift' 변수를 2로 초기화합니다.
'result' 변수에는 'num' 변수를 'shift'만큼 오른쪽으로 시프트한 결과를 저장합니다.
이제 'result' 변수를 출력하면, 'num' 변수를 오른쪽으로 2비트 시프트한 결과인 2가 출력됩니다.
비트 오른쪽 시프트 연산은 이진수를 오른쪽으로 지정된 비트 수만큼 이동시키는 연산입니다.
이동하는 동안 왼쪽의 공백 비트는 0으로 채워집니다.
즉, 비트 오른쪽 시프트 연산은 오른쪽으로 이동하면서 2진수 값을 2로 나누는 것과 같습니다.
위 예제에서는 8을 이진수로 표현하면 '00001000' 입니다.
2비트 오른쪽으로 시프트하면 '00000010'이 됩니다.
이진수 '00000010'은 10진수로 2를 나타냅니다.
따라서 위 코드는 "숫자 8을 2만큼 오른쪽으로 시프트하면 2가 됩니다."라는 메시지를 출력합니다.

어떠셨나요?
오늘은 C++ 코딩 비트 연산자의 종류와 예제에 대해 자세하게 설명드렸는데요
하나하나씩 차근차근 이해해나가다 보면 어느순간 마스터가 되어 있는 자신을 발견하실 거에요 ㅎㅎ
그럼 저는 다음 시간에 또 다른 C++ 코딩으로 돌아오겠습니다
감사합니다!