Bitwise Operators

장주명·2021년 5월 19일
0

Operators

목록 보기
7/11

다른 연산자보다 어렵기 때문에 잘사용되지 않는다.

하지만 메모리에 실제 저장된 값을 계산하기 떄문에 처리 속도가 빠르고

짧은 코드로 복잡한 로직을 구현할떄 자주 활용된다.

비트에는 0과 1을 저장할수 있는데 논리 연산자와 비슷하다.

Bitwise NOT Operator

~a

bit를 0을 1로 1을 0으로 바꿔준다.

let a : UInt8 = 0b0000_0010
~a // 0b1111_1101

Bitwise AND Operator

a & b

let a : UInt8 = 0b0010_0010
let b : UInt8 = 0b1100_1110

a & b // ob0000_0010

하나라도 0이라면 최종비트는 0 이되고 모두 1일때만 1이 된다.

Bitwise OR Operator

let a : UInt8 = 0b0010_0010
let b : UInt8 = 0b1100_1110

a | b // 0b1110_1110

// 하나라도 1이라면 최종비트는 1 이되고 모두 0일떄민 10이 된다.let a : UInt8 = 0b0010_0010
let b2 : UInt8 = 0b1100_1110

a & b2 // ob0000_0010

// 하나라도 0이라면 최종비트는 0 이되고 모두 1일떄민 1이 된다.

Bitwise XOR Operator (Exclusive OR)

a ^ b

두 비트가 다를때만 1이되고 두피트가 같을떄는 0


let a : UInt8 = 0b0010_0010
let b : UInt8 = 0b1100_1110

a | b // 0b1110_1100
Bitwise Left Shift Operator

a << n

메모리의 저장된 비트를 왼쪽으로 이동시킨다. 맨앞의 비트는 사라지고 새로 추가된 비트에는 0이 저장된다.

let a : UInt8 = 0b0010_0010
a << 1 // ob0100_0100 *2와 동일
a << 2 // ob1000_1000 *4와 동일
a * 4 // 위와 동일하지만 위에 연산자가 더빠르게 실행된다.

Bitwise Right Shift Operator

a >> n

논리 쉬프트

비트가 오른쪽으로 밀려나고 밀려난 비트는 사라제기 된다. 새롭게 추가된 비트는 0일수도 있고 아닐수도있다.

산술 쉬프트

기존에 있던 sign bit가 채워진다. 만약 맨앞이 0이였다면 0 앞이 1이였다면 1로 채워친다.

let a : UInt8 = 0b0010_0010 //34
a >> 1 //  / 2와 동일 // 17
a >> 2 //  / 4와 동일 // 8
profile
flutter & ios 개발자

0개의 댓글

관련 채용 정보