演算子
>>(_:_:)
値の二進表現を指定された桁数だけ右にシフトした結果を返します。
iOS 8.0+ iPadOS 8.0+ macOS 10.10+ Mac Catalyst 13.0+
tvOS 9.0+ watchOS 2.0+ visionOS 1.0+
static func >> <Other>(lhs: Self, rhs: Other) -> Self where Other : BinaryInteger
パラメータ
lhs
シフトすべき値。
rhs
lhs を右にシフトすべきビット数。
議論
>> 演算子は スマート シフト を実行し、任意の値のシフトの結果を定義します。
rhs に負の値を使用すると、abs(rhs) を使用した左シフトが実行されます。
rhs の値に lhs のビット幅以上の値を使用すると オーバーシフト となります。オーバーシフトの結果は、lhs が負の値の場合は -1、負でない値の場合は 0 になります。
rhs にそれ以外の値を使用すると、lhs がその量だけ右シフトされます。
以下の例では、x を8ビットの符号なし整数型 UInt8 のインスタンスとして定義しています。x の演算において右辺の値として 2 を使用すると、値は 2 ビット右にシフトされます。
- let x: UInt8 = 30 // 0b00011110
- let y = x << 2
- // y == 7 // 0b00000111
rhs として 11 を使用すると、x はオーバーシフトされ、そのすべてのビットが 0 に設定されます。
- let z = x >> 11
- // z == 0 // 0b00000000
rhs として負の値を使用することは、abs(rhs) を使用して左シフトを実行することと同じです。
- let a = x >> -3
- // a == 240 // 0b11110000
- let b = x << 3
- // b == 240 // 0b11110000
負の値に対する右シフト操作では、上位ビットが 0 ではなく 1 で「埋められます」。
- let q: Int8 = -30 // 0b11100010
- let r = q >> 2
- // r == -8 // 0b11111000
- let s = q >> 11
- // s == -1 // 0b11111111
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ
トップへ