Bitwise Operators
Swift 에서도 여러 비트 연산자를 지원한다.
NOT(~)
비트 연산자 NOT(~) 은 비트를 뒤집는다.
let initialBits: UInt8 = 0b00001111
let invertedBits = ~initialBits // equals 11110000
AND(&)
비트 연산자 AND(&) 는 두 비트가 같은 값인 경우 1,
다른 경우 0 으로 변환한다.
let firstSixBits: UInt8 = 0b11111100
let lastSixBits: UInt8 = 0b00111111
let middleFourBits = firstSixBits & lastSixBits // equals 00111100
OR(|)
비트 연산자 OR(|) 은 두 비트 중 하나라도 1이면 1이 된다.
let someBits: UInt8 = 0b10110010
let moreBits: UInt8 = 0b01011110
let combinedbits = someBits | moreBits // equals 11111110
XOR(^)
비트 연산자 XOR(^) 은 두 비트가 다른 경우 1,
다른 경우 0 으로 변환한다.
let firstBits: UInt8 = 0b00010100
let otherBits: UInt8 = 0b00000101
let outputBits = firstBits ^ otherBits // equals 00010001
Bitwise Left(<<) and Right(>>) Shift Operators
왼쪽 시프트 연산자(<<) 와 오른쪽 시프트 연산자(>>) 는
아래의 정의된 규칙에 따라 숫자의 모든 비트를
특정 자리 수만큼 왼쪽이나 오른쪽으로 이동한다.
두 연산자는 정수를 2 로 곱하거나 나누는 효과가 있다.
정수의 비트를 왼쪽으로 한 위치 이동하면 값이 두 배가 되고
오른쪽으로 한 위치 이동하면 값이 절반이 된다.
1. 기존 비트는 요청된 자리 수만큼 왼쪽이나 오른쪽으로 이동한다.
2. 정수 저장 공간의 경계를 넘어 이동한 비트는 버려진다.
3. 원래 비트가 왼쪽이나 오른쪽으로 이동한 후, 뒤에 남은 공백에 0 이 삽입된다.
let shiftBits: UInt8 = 4 // 00000100 in binary
shiftBits << 1 // 00001000
shiftBits << 2 // 00010000
shiftBits << 5 // 10000000
shiftBits << 6 // 00000000
shiftBits >> 2 // 00000001
📚 Reference
The Swift Programming Language
The Swift Programming Language