비트 연산자와 시프트 연산자
§ 비트 연산자란?
: 컴퓨터 내부의 데이터를 비트(bit) 단위로 비교하거나 조작할 때 사용한다.
~ | 1의 보수(부정) |
^ | XOR(배타적 논리합) 비트 연산자 |
| | OR(논리합) 비트 연산자 |
& | AND(논리곱) 비트 연산자 |
<< | 왼쪽 시프트 연산자 |
>> | 오른쪽 시프트 연산자 |
§ 비트 연산자 (부정, 논리곱, 논리합, 배타적 논리합) 예시
A = 0001 1001 1011 1111
B = 0110 1011 1110 0000
~A = 1110 0110 0100 0000
~B = 1001 0100 0001 1111
A^B = 0111 0010 0101 1111
A|B = 1111 0110 0101 1111
A&B = 1000 0100 0000 0000
§ 시프트 연산
: 비트 연산자의 한 종류로서 비트를 좌, 우로 이동하는 연산이다.
§ 시프트 연산 예시
A<<2 = 0110 0110 1111 1100
B>>2 = 0001 1010 1111 1000
§ 비트(시프트를 포함한) 연산의 사용 예
&= [~] (클리어)
: 선택된 비트를 0으로 & 연산해 0으로 초기화시킨다.
|= (마스킹)
: 선택된 비트를 1로 | 연산해 1로 바꾼다.
시프트 연산은 두 가지 용도로 쓰인다.
1. 로케이터
비트의 위치를 선정한다. - 비트의 특정 부분만 1로 바꾸거나, 상위 비트만 할당 할 때
2. 곱하기 / 나누기
<<에 n만큼 비트를 이동하면 2^n로 곱하기 효과가 일어나지만,
>>에 n만큼 비트를 이동하면 2씩 나누어진다.
반응형