메모리 비트 단위로 직접적인 논리연산을 하거나, 비트 단위 이동시에 사용하는 연산
장점)
- 연산속도가 빠름 - 직접적으로 메모리의 실제 비트를 컨트롤 --> 게임과 같은 빠른 처리를 요구할 때 사용
- 짧은 코드로 복잡한 로직을 구현 가능한 경우가 있음
스위프트 비트연산자 6가지
(비트 논리 연산자)
- ~ : Bitwise NOT Operator(비트와이즈 낫 연산자)
- == 비트논리부정연산자, 단항연산자의 형태로 사용 (~a)
- 0은 1으로 , 1은 0으로
- & : Bitwise AND Operator(비트와이즈 앤드 연산자)
- == 비트논리곱연산자, 이항연산자의 형태로 사용 (a&b)
- 두개의 메모리 비트 모두가 1일때만 1을 반환
- | : Bitwise OR Operator(비트와이즈 오어 연산자)
- 비트 논리합연산자, 이항연산자의 형태로 사용 (a | b)
- 두개의 메모리 비트 중 하나라도 1이면 1을 반환
- ^ : Bitwise XOR Operator(비트와이즈 엑스오어 연산자)
- 비트 논리 배타 연산자(또는 익스클루시브 OR 연산자), 이항연산자의 형태로 사용
- 두개의 메모리 비트를 비교해서 서로 다르면 1을 반환
(비트 이동 연산자)
- << : Bitwise Left Shift Operator(비트와이즈 레프트 시프트 연산자)
- Unsigned(부호가 없는) 비트 이동 연산자의 경우 ( leftShiftBits << 1 )
- 기존비트를 요청된 값만큼 왼쪽이나 오른쪽으로 이동
- 정수(integer)의 수용 범위를 넘어서는 비트는 어떤 것이든 버림
- 비트를 왼쪽으로 이동하면서 남는 공간에는 0을 삽입
- Signed(부호가 있는) 비트 이동 연산자의 경우
- 기존비트를 요청된 값만큼 왼쪽이나 오른쪽으로 이동
- 정수(integer)의 수용 범위를 넘어서는 비트는 어떤 것이든 버림
- 비트를 왼쪽으로 이동하면서 남는 공간에는 0을 삽입
- Unsigned(부호가 없는) 비트 이동 연산자의 경우 ( leftShiftBits << 1 )
- >> : Bitwise Right Shift Operator(비트와이즈 라이트 시프트 연산자)
- Unsigned(부호가 없는) 비트 이동 연산자의 경우 ( rightShiftBits >> 1 )
- 기존비트를 요청된 값만큼 왼쪽이나 오른쪽으로 이동
- 정수(integer)의 수용 범위를 넘어서는 비트는 어떤 것이든 버림
- 비트를 왼쪽으로 이동하면서 남는 공간에는 0을 삽입
- Signed(부호가 있는) 비트 이동 연산자의 경우
- 기존비트를 요청된 값만큼 왼쪽이나 오른쪽으로 이동
- 정수(integer)의 수용 범위를 넘어서는 비트는 어떤 것이든 버림
- 비트를 왼쪽으로 이동하면서 남는 공간에는 0을 삽입
- ⭐️비트가 오른쪽으로 이동하면서 남는 공간에는 + 일땐 0 , - 일땐 1 삽입 (부호유지를 위한 삽입 : Arithmetic 산술 시프트)
- Unsigned(부호가 없는) 비트 이동 연산자의 경우 ( rightShiftBits >> 1 )