비트 연산자는 비트 단위로 논리 연산을 할 때 사용하는 연산자이다.
비트 연산자 | 설명 |
---|---|
& | 대응되는 비트가 1이면 1을 반환함(비트 AND 연산) |
| | 대응 되는 비트 중에서 하나라도 1이면 1을 반환함 (비트 OR 연산) |
^ | 대응되는 비트가 서로 다르면 1을 반환함 (비트 XOR 연산) |
~ | 비트를 1이면 0으로 0이면 1로 반전시킴. (비트 NOT 연산, 1의 보수) |
<< | 명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴 (left shift 연산) |
>> | 부호를 유지하면서 지정한 수 만큼 비트를 전부 오른쪽으로 이동시킴 (right shift) |
>>> | 지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됨. |
AND 연산은 대응되는 두 비트가 모두 1일 때만 1을 반환한다.
OR 연산은 대응되는 두 비트중 하나라도 1이면 1을 반환하고 두 비트가 모두 0일때만 0을 반환한다.
XOR 연산은 대응되는 두 비트가 서로 다를때 1을 반환하고 같으면 0을 반환한다.
NOT 연산은 비트가 1이면 0을 반환하고 0이면 1을 반환한다.
왼쪽 스프트 연산자는 지정한 수 만큼 비트를 전부 왼쪽으로 이동시킨다.
이때 비트의 이동으로 새로 생기는 오른쪽 비트는 0으로 채워진다.
모든 비트가 한 비트씩 왼쪽으로 이동할 때마다 값은 2배씩 증가한다.
오른쪽 시프트(>>) 연산자는 지정한 수 만큼 비트를 전부 오른쪽으로 이동시킨다
이때 비트의 이동으로 새로 생기는 왼쪽 비트는 양수일 경우 0 음수일 경우에는 1로 채워진다.
모든 비트가 한 비트씩 오른쪽으로 이동할 때마다 값은 2배씩 감소한다.
오른쪽 시프트 연산자(>>>)는 부호비트까지 포함하여 모든 비트를 전부 오른쪽으로 이동시킨다.
이때 비트의 이동으로 새로 생기는 왼쪽 비트는 언제나 0으로 채워진다.
피연산자가 양수일 경우 오른쪽 시프트 연산자(>>)와 같은 결과를 반환한다.
피연산자가 음수일 경우 부호 비트까지 이동하므로 전혀 다른 결과가 반환된다