일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 도움말
- 충무창업큐브
- mfc 실습
- 실습
- linux
- 김성엽
- MyThread
- MyTread
- 포트폴리오
- 정보처리기사
- 미가공
- MFC 예제
- C
- SSG
- Tipsware
- ListBox
- visual
- C언어
- MFC
- Time
- 유료강좌
- tips강좌
- 핵심 요약
- 별찍기
- win32
- C++
- mysql
- 정처기 독학
- do it c
- 마이크로소프트
- Today
- Total
History
시프트 연산자와 비트연산자 step_1 본문
일반적으로 비트는 0 또는 1을 저장할 수 있는 공간이다. 예를 들면 전등을 제어하려고 한다. 전등은 키는 동작 그리고 끄는 동작이다. 전등은 이 두 가지로 제어할 수 있다. 문자 그대로 "켜지다, 꺼지다" 이렇게 제어하면 문자열을 처리해야 하기 때문에 보통 0이면 끄는 동작 1이면 키는 동작으로 우리는 약속하고 있다.
이러한 상황에서 우리는 0과 1을 비트로 제어할 수 있다.
그러나 비트연산자를 잘 모르면 자료형 중에서 가장 작은 단위인 char(1바이트==8비트)를 사용해서 0과 1을 대입하여서 전등을 제어할 것이다. 물론 전등이 1개만 있는 경우에는 괜찮지만 800개의 전등이 있을 시 char로 전등을 제어하면 800바이트를 사용할 수밖에 없다.
그러나 비트로 전등을 제어하면 100바이트로 전등을 전부 제어할 수 있기 때문에 메모리 용량을 효율적으로 제어할 수 있다. 그래서 비트 단위로 어떠한 행위를 제어하고 싶으면 반드시 시프트 연산자와 비트 연산자를 알아야한다.
비트 연산자를 자유자재로 바꾸고 싶다면 아래 표를 꼭 기억하자
2진법->16진법 변환 표
0000: 0 | 0100: 4 | 1000: 8 | 1100: C(12) |
0001: 1 | 0101: 5 | 1001: 9 | 1101: D(13) |
0010: 2 | 0110: 6 | 1010: A(10) | 1110: E(14) |
0011: 3 | 0111: 7 | 1100: B(11) | 1111: F(15) |
예를 들어 부호 없는 1바이트 data 변수를 선언하고 그 변수에 16진수 값 5A로 초기화하는 코드는 아래와 같다.
unsigned char data=0x5A; //16진수를 표시할 때는 앞에 0x를 반드시 붙여야한다.
그리고 16진수 한 자리는 4비트를 의미하기 때문에 아래와 같이 1바이트(8비트) 크기의 data 변수는 4자리씩 나뉜 2진법으로 표현한다.

비트를 그림으로 그려서 설명할 때 비트 번호는 아래 그림처럼 오른쪽에서 왼쪽으로 갈수록 비트 번호가 커진다.

'C,C++ > 개념 실습 프로그래밍' 카테고리의 다른 글
시프트 연산자와 비트연산자 step_3 (0) | 2022.11.19 |
---|---|
시프트 연산자와 비트연산자 step_2 (0) | 2022.11.19 |
[C언어]정숫값 합산하기 (0) | 2022.11.01 |
[C언어][배열] 변수와 배열의 초기화 (0) | 2022.10.29 |
[C언어][배열] 데이터와 차원 (0) | 2022.10.29 |