Bitwise Operators


他の演算子より難しいので、あまり使いにくいです.
ただし、メモリに格納されている実際の値を計算するため、処理速度が速くなります.
短いコードで複雑な論理を実現する際によく使用されます.
ビットは、論理演算子と同様に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
1つが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

2つのビットが異なる場合にのみ1であり、2つのビットが同じ場合には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

ろんりわりこみ


ビットは右に押し出され、押し出されたビットは消えてしまう.新しく追加されたビットはゼロでもなくてもいいです.

さんじゅつ


既存のsign bitが埋め込まれます.一番前が0の場合、0の前が1の場合、1で埋めます.
let a : UInt8 = 0b0010_0010 //34
a >> 1 //  / 2와 동일 // 17
a >> 2 //  / 4와 동일 // 8