비트란?
한개 혹은 두 개의 이진수에 대해 비트 단위로 적용되는 연산.
일반적으로 비트라고 하는것은 데이터의 가장 작은 단위라고 할 수 있다.
모든 메모리는 0과 1을 가지고 이진수로 저장이 되는데, 이 0혹은 1의 값을 비트라고 부르는 것이다.
이 비트가 8개 모이면 바이트가 되어 비로소 무언가를 해볼만한 사이즈가 된다.
그렇다면 비트 연산이란 무엇인가?
비트 수준으로 값을 다루는 경우 비트 단위 연산자라는 것을 사용하는데, 정수형 수식(char, short, int, long, long long 등등...)에 사용할 수 있는 연산자로, 시스템에 종속적이라는 특징을 갖고 있다.
이 비트 연산자는 6가지가 존재하는데 하나하나 알아보도록 하자.
연산자 종류 | 연산자 이름 | 연산자 |
논리 연산자 | (단항) 비트단위 보수 | ~ |
비트단위 논리곱 | & | |
비트단위 배타적 논리합 | ^ | |
비트단위 논리합 | | | |
이동 연산자 | 왼쪽 이동 | << |
오른쪽 이동 | >> |
논리 연산자
~연산자는 뒤에 오는 값의 1의 보수를 계산하여 피연산자의 각 비트를 0은 1로, 1은 0으로 바꿔주게 된다.
논리적으로는 Not을 의미하며, true의 경우 false로, false의 경우 true를 의미하게 된다.
&연산자는 논리곱을 의미하며, 전건과 후건의 대응되는 비트가 모두 1이라면 1을, 그 외의 경우 0을 반환하는 연산자이다.
|연산자는 논리합을 의미하며, 전건, 후건 둘중 어느 비트라도 1이라면 모두 1을, 둘 다 0이어야 0을 반환하는 연산자이다.
^연산자는 배타적 논리합을 의미하며, 전건과 후건이 동일한 경우 0을, 그 외의 경우 1을 반환하는 연산자이다.
이동 연산자
이동 연산자는 지정된 값의 비트열을 이동시키게 된다. 이때 이동 연산자의 두 피연산자는 모두 정수 수식이어야 한다.
왼쪽 이동 연산자부터 한번 알아보자.
수식 1 << 수식 2 이렇게 표기를 하는데, 수식 1의 비트열을 수식 2만큼 왼쪽으로 이동시킨다는 의미이다.
이때 왼쪽으로 이동해서 생긴 공간은 0으로 표기하고, 반대로 오른쪽으로 이동하면서 표현 공간을 넘어가는 비트열들을 소멸된다.
이 왼쪽 이동 연산자를 이용하면 2의 거듭제곱을 쉽게 표현이 가능하다.
오른쪽 이동 연산자도 한번 알아보자.
역시 수식 1 >> 수식 2 이렇게 표기를 하고, 수식 1의 비트열이 수식 2만큼 오른쪽으로 이동하게 된다.
역시 우측으로 밀리면서 빈 상위 비트를 0으로 채우게 된다.
'Programming > 기타' 카테고리의 다른 글
UTF - 8 / 16 (0) | 2025.01.05 |
---|---|
구조체 패딩 (0) | 2024.12.30 |
워치독 타이머(Watchdog Timer) (0) | 2024.12.15 |
소프트웨어의 정의와 특성 (1) | 2024.12.08 |
인터페이스와 추상클래스 (0) | 2024.12.08 |