Bitwise Operators
2186 ワード
他の演算子より難しいので、あまり使いにくいです.
ただし、メモリに格納されている実際の値を計算するため、処理速度が速くなります.
短いコードで複雑な論理を実現する際によく使用されます.
ビットは、論理演算子と同様に0と1を格納できます.
~a
bitを0から1に、1を0にします.
a & b
a ^ b
2つのビットが異なる場合にのみ1であり、2つのビットが同じ場合には0である.
メモリ内のストレージビットを左に移動します.一番前のビットは消え、新しく追加したビットは0を格納します.
a >> n
ビットは右に押し出され、押し出されたビットは消えてしまう.新しく追加されたビットはゼロでもなくてもいいです.
既存のsign bitが埋め込まれます.一番前が0の場合、0の前が1の場合、1で埋めます.
ただし、メモリに格納されている実際の値を計算するため、処理速度が速くなります.
短いコードで複雑な論理を実現する際によく使用されます.
ビットは、論理演算子と同様に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
Reference
この問題について(Bitwise Operators), 我々は、より多くの情報をここで見つけました https://velog.io/@isouvezz/Bitwise-Operatorsテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol