범위 연산자
- 5…8 : 5,6,7,8
- 5..<8 : 5,6,7
- 2… : 문자열의 길이와 상관 없이 문자열의 세 번째 문자(인덱스 2)부터 시작해서 마지막 문자까지의 문자들을 지정하는 범위
- …6 : 첫 번째 위치의 문자부터 일곱 번째 문자(인덱스 6)까지의 범위
비트 연산자
- 10진수 171을 2진수로 표현 : 10101011
- 10진수 3을 2진수로 표현 : 00000011
NOT 비트 연산
- 틸드(~) 문자로 표현되며 숫자의 모든 비트를 반대로 만듬
- 최상위 비트는 음수인 정수를 표현하는 데 사용됨
let y = 3 // 00000011
let z = ~y
print(z) // -4
AND 비트 연산
- 엠퍼센트(&) 문자로 표현되며, 두 개의 숫자를 비트 단위로 비교
- 10101011 AND 00000011 → 00000011
let x = 171
let y = 3
let z = x & y
print(z) // 3
OR 비트 연산
- 10101011 OR 00000011 → 10101011
let x = 171
let y = 3
let z = x | y
print(z) // 171
XOR 비트 연산
- 두 개의 비트 중 하나만 1일 경우 1이 됨, 캐럿(^)으로 표현
- 10101011 XOR 00000011 → 10101000
let x = 171
let y = 3
let z = x ^ y
print(z) // 168
왼쪽 시프트 비트 연산
- 2진수의 각 비트를 지정된 횟수만큼 왼쪽으로 이동 시킴
- 정수의 비트를 한 자리씩 왼쪽 이동하면 그 정숫값은 2배가 됨
- 가장 오른쪽 위치의 빈자리는 0으로 채움
- << 표현
- 10101011 << 1 → 101010110
let x = 171
let z = x << 1
print(z) // 342
let x = 171
let z = x << 2
print(z) // 684
오른쪽 시프트 비트 연산
- 2진수의 각 비트를 지정된 횟수만큼 오른쪽으로 이동
- 정수의 비트를 오른쪽으로 한 자리씩 이동하면 그 정숫값은 절반이 됨
- 오른쪽으로 비트 이동은 오른쪽 끝의 마지막 비트가 폐기 됨
- 최상위 비트는 양수, 음수를 가리키는데 사용되는 부호비트가 설정되어 있는지에 따라 결정됨
- >> 표현
- 10101011 >> 1 → 01010101
let x = 171
let z = x >> 1
print(z) // 85
let x = 171
let z = x >> 2
print(z) // 42