[iOS] Bitwise Operators

Eugenie·2022년 7월 15일
0

Hits

Bitwise Operators

Swift 에서도 여러 비트 연산자를 지원한다.

NOT(~)

비트 연산자 NOT(~) 은 비트를 뒤집는다.

NOT OP

let initialBits: UInt8 = 0b00001111
let invertedBits = ~initialBits  // equals 11110000

AND(&)

비트 연산자 AND(&) 는 두 비트가 같은 값인 경우 1,
다른 경우 0 으로 변환한다.

AND OP

let firstSixBits: UInt8 = 0b11111100
let lastSixBits: UInt8  = 0b00111111
let middleFourBits = firstSixBits & lastSixBits  // equals 00111100

OR(|)

비트 연산자 OR(|) 은 두 비트 중 하나라도 1이면 1이 된다.

OR OP

let someBits: UInt8 = 0b10110010
let moreBits: UInt8 = 0b01011110
let combinedbits = someBits | moreBits  // equals 11111110

XOR(^)

비트 연산자 XOR(^) 은 두 비트가 다른 경우 1,
다른 경우 0 으로 변환한다.

XOR OP

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 이 삽입된다.

SHIFT OP

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

profile
🌱 iOS developer

0개의 댓글