비트 연산자와 오버플로 연산자
비트를 조작하고 &+ 같은 오버플로 연산자를 안전하게 사용합니다.
비트 연산자와 오버플로 연산자은(는) CoddyKit의 무료 Swift Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Swift Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
비트 연산자
비트 연산자는 정수를 이루는 각각의 이진 숫자에 대해 동작합니다. Swift는 AND &, OR |, XOR ^, NOT ~, 시프트 <<와 >>를 제공합니다.
let a: UInt8 = 0b1100
let b: UInt8 = 0b1010
print(a & b)
print(a | b)비트 AND
&는 두 입력 비트가 모두 1일 때만 각 결과 비트를 1로 설정합니다. 비트를 mask하는 데 자주 사용됩니다.
let value: UInt8 = 0b10110101
let mask: UInt8 = 0b00001111
let low = value & mask
print(low)비트 OR
|는 두 입력 비트 중 하나라도 1이면 각 결과 비트를 1로 설정합니다. 플래그를 결합할 때 유용합니다.
let flagsA: UInt8 = 0b0001
let flagsB: UInt8 = 0b0100
let combined = flagsA | flagsB
print(combined)비트 XOR
^는 두 입력 비트가 다를 때만 비트를 1로 설정합니다. 같은 값과 XOR을 두 번 수행하면 original이 복원됩니다.
let original: UInt8 = 0b1010
let key: UInt8 = 0b0110
let encoded = original ^ key
let decoded = encoded ^ key
print(encoded, decoded)비트 NOT
단항 ~은 모든 비트를 반전합니다. UInt8에서는 8개 비트가 모두 뒤집힙니다.
let bits: UInt8 = 0b00001111
let inverted = ~bits
print(inverted)왼쪽 시프트
<<는 비트를 왼쪽으로 이동하고 0으로 채웁니다. 1만큼 왼쪽 시프트할 때마다 unsigned 값에 2를 곱한 것과 같습니다.
let n: UInt8 = 0b00000011
print(n << 1)
print(n << 2)오른쪽 시프트
>>는 비트를 오른쪽으로 이동합니다. unsigned 정수에서는 0으로 채우므로 사실상 2의 거듭제곱으로 나누는 효과가 있습니다.
let n: UInt8 = 0b00010000
print(n >> 1)
print(n >> 4)일반 연산자의 오버플로
표준 산술 연산은 프로그램을 안전하게 유지하기 위해 오버플로가 발생하면 오류를 발생시킵니다. 형식의 최댓값을 넘으면 일반적으로 조용히 순환하지 않고 프로그램이 중단됩니다.
let maxByte = UInt8.max
print("Max UInt8:", maxByte)
let safe = Int(maxByte) + 1
print("Promoted sum:", safe)오버플로 덧셈 &+
의도적으로 순환 동작을 원할 때는 오버플로 연산자를 사용합니다. &+는 프로그램을 중단하는 대신 최댓값을 넘어 최솟값으로 순환합니다.
let maxByte: UInt8 = 255
let wrapped = maxByte &+ 1
print(wrapped)오버플로 뺄셈과 곱셈
&-와 &*도 같은 방식으로 순환합니다. UInt8에서 0 &- 1은 255로 순환합니다.
let zero: UInt8 = 0
print(zero &- 1)
let big: UInt8 = 200
print(big &* 2)오버플로 연산자를 사용하는 경우
해싱이나 순환 카운터처럼 순환 동작이 의도된 경우에만 &+ &- &*를 사용합니다. 그 외에는 안전을 위해 오류를 발생시키는 연산자를 사용하는 편이 좋습니다.
var counter: UInt8 = 254
for _ in 0..<4 {
counter = counter &+ 1
print(counter)
}빠른 확인
오버플로가 어떻게 순환하는지 생각해 보세요.
복습: 비트 연산자와 오버플로 연산자
비트 연산자 & | ^ ~와 시프트 << >>, 일반 산술 연산은 안전을 위해 오버플로에서 오류를 발생시킨다는 점, 그리고 &+ &- &*는 형식의 경계를 의도적으로 순환한다는 점을 배웠습니다.
let mask: UInt8 = 0b1111
let v: UInt8 = 0b10101010
print("Masked:", v & mask)
print("Wrap:", UInt8(0) &- 1)자주 묻는 질문
“비트 연산자와 오버플로 연산자” 강의는 무료인가요?
네 — “비트 연산자와 오버플로 연산자” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Swift Academy 강의 전체를 잠금 해제할 수 있습니다. Swift Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“비트 연산자와 오버플로 연산자”에서 뭘 배우나요?
비트를 조작하고 &+ 같은 오버플로 연산자를 안전하게 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 Swift Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Swift Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Swift Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“비트 연산자와 오버플로 연산자” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Swift Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Swift Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 산술 및 복합 대입 연산자
- 비교 및 식별 연산자
- 논리 연산자와 단락 평가
- 비트 연산자와 오버플로 연산자