演算子


>>=(_:_:)


値の二進表現を指定された桁数だけ右にシフトした結果を左辺の変数に格納します。


iOS 8.0+ iPadOS 8.0+ macOS 10.10+ Mac Catalyst 13.0+

tvOS 9.0+ watchOS 2.0+ visionOS 1.0+

static func >>= <RHS>(lhs: inout Self, rhs: RHS) where RHS : BinaryInteger

必須 デフォルトの実装が提供されます。





パラメータ


lhs

シフトすべき値。


rhs

lhs を右にシフトすべきビット数。



議論


>>= 演算子は スマート シフト を実行し、任意の値のシフトの結果を定義します。


  • rhs に負の値を使用すると、abs(rhs) を使用した左シフトが実行されます。

  • rhs の値に lhs のビット幅以上の値を使用すると オーバーシフト です。オーバーシフトの結果は、lhs が負の値の場合は -1、負でない値の場合は 0 になります。

  • rhs にそれ以外の値を使用すると、lhs がその量だけ右シフトされます。

  • 以下の例では、x を8ビットの符号なし整数型 UInt8 のインスタンスとして定義しています。x の演算において右辺の値として 2 を使用すると、値は 2 ビット右にシフトされます。


    1. var x: UInt8 = 30 // 0b00011110
    2. x >>= 2
    3. // y == 7  // 0b00000111

    rhs として 11 を使用すると、x はオーバーシフトされ、そのすべてのビットが 0 に設定されます。


    1. var y: UInt8 = 30 // 0b00011110
    2. y >>= 11
    3. // y == 0 // 0b00000000

    rhs として負の値を使用することは、abs(rhs) を使用して左シフトを実行することと同じです。


    1. var a: UInt8 = 30 // 0b00011110
    2. a >>= -3
    3. // a == 240 // 0b11110000
    4. var b: UInt8 = 30 // 0b00011110
    5. b <<= 3
    6. // b == 240 // 0b11110000

    負の値に対する右シフト操作では、上位ビットが 0 ではなく 1 で「埋められます」。


    1. var q: Int8 = -30 // 0b11100010
    2. q >>= 2
    3. // q == -8 // 0b11111000
    4. var r: Int8 = -30 // 0b11100010
    5. r >>= 11
    6. // r == -1 // 0b11111111




    デフォルトの実装


    BinaryInteger の実装


    static func >>= <Other>(inout Self, Other) -> Self

    値の二進表現を指定された桁数だけ右にシフトした結果を返します。














    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ












    トップへ