컴퓨터/C
컴퓨터에서 기본적으로 제공하는 단위는 보통 1바이트입니다. 메모리의 최소 단위가 1바이트로 이루어져 있기 때문입니다. 하지만 컴퓨터 공학을 배우면 정보의 가장 작은 단위는 1비트입니다 0과 1만이 존재합니다.
본문에서는 비트를 연산하는 방법에 대해 알아보도록 합시다.
비트 연산을 할 수 있다면 작은 단위의 데이터를 조금 더 효율적으로 다룰 수 있게 됩니다. 또한 비트단위의 계산은 조금 더 빠른 속도를 제공합니다.
다만, 우리에게 익숙하지 않은 2진수의 개념을 익혀야만 쉽게 사용할 수 있습니다.
흔하게 사용되지는 않지만 작은 단위의 데이터 안에 효율적인 정보를 담기 위해 사용되고 있습니다.
비트 연산자 | 설명 |
& | AND 연산 |
| | OR 연산 |
^ | XOR 연산 |
<< | Left Shift |
>> | Right Shift |
위의 표처럼 비트를 다양한 방법으로 제어할 수 있습니다.
자 그럼, 하나씩 사용해 보며 비트 연산에 대해 알아보도록 합시다.
int main(){
unsigned char number1 = 1; // 2진수 메모리 : 0000 0001
unsinged char number2 = 7; // 2진수 메모리 : 0000 0111
// AND 대응되는 비트가 모두 1이면 1 반환
printf("%d\n", number1 & number2); // 0000 0001
// OR 대응되는 비트 중 하나라도 1이면 1반환
printf("%d\n", number1 | number2); // 0000 0111
// XOR 대응되는 비트가 서로 다르면 1을 반환
printf("%d\n", number1 ^ number2); // 0000 0110
return 0;
}
시프트 연산의 경우 비트가 이동을 하게 됩니다.
int main()
{
// << 시프트 연산
printf("%d\n", number1 << 1); // 0000 0001 --> 0000 0010
// >> 시프트 연산
printf("%d\n", number1 >> 1); // 0000 0001 --> 0000 0000
return 0;
}
예제처럼 비트를 한쪽 이동시키게 되는 겁니다. 다만 크기 이상을 벗어난다면 오버플로우 현상으로 인해 데이터는 사라지게 됩니다.
C언어 - switch 문과 지역변수 (중괄호의 필요성) (0) | 2022.04.01 |
---|---|
C 언어 - CallBack함수(콜백함수) (1) | 2022.01.28 |
C 언어 - 함수 포인터 (0) | 2022.01.28 |
Visual Studio - Debug 와 Release (프로그램 배포) (0) | 2022.01.05 |
C 언어 - scan 무한 반복 에러 (0) | 2021.12.01 |
91년생 공학엔지니어의 개발일지
TODAY :
YESTER DAY :
TOTAL :
Commnet