Bitwise Operators
작성일
비트 연산자
~
a -> 00100011
~a -> 11011100
실제코드로 확인해보면,
let a: UInt8 = 0b0000_0010 // 2
~a //253
0b1111_1101 //253
&
0을 true 1을 false라 생각하고, 계산하면
00100011
00011010 &
--------
00000010
가 나온다.
자세히 코드로 보면,
let a: UInt8 = 0b0010_0010 // 34
let b: UInt8 = 0b1100_1110 // 206
a & b // 2
0b0000_0010 // 2
|
0을 true 1을 false라 생각하고, 계산하면
00100011
00011010 |
--------
00111011
가 나온다. 자세히 코드로 보면,
let a: UInt8 = 0b0010_0010 // 34
let b: UInt8 = 0b1100_1110 // 206
a | b // 238
0b1110_1110 // 238
^
- 두 비트가 같으면 0 다르면 1이 된다.
0을 true 1을 false라 생각하고, 계산하면
00100011
00011010 ^
--------
00111001
가 나온다.자세히 코드로 보면,
let a: UInt8 = 0b0010_0010 // 34
let b: UInt8 = 0b1100_1110 // 206
a ^ b // 236
0b1110_1100 // 236
«
- 모든 비트를 왼쪽으로 옮긴다.
왼쪽으로 밀려나고 밀려난 비트는 사라진다. 그후 0이 추가된다.
00100011
--------
01000110
a << 1
가 나온다.자세히 코드로 보면,
let a: UInt8 = 0b0010_0010 //34
a << 1
0b0100_0100
a << 2 // 136
a * 4 // 136
»
- 모든 비트를 오른쪽으로 옮긴다.
오른쪽으로 밀려나고 밀려난 비트는 사라진다. 그후 0이 추가된다.(0이 안되는 경우도 있음)
00100011
--------
00010001
a >> 1
가 나온다.자세히 코드로 보면,
let a:UInt8 = 0b0010_0010 //34
a >> 1 // 17
a >> 2 // 8