1. 8.0.0
    Type OperatorSwiftBSONSwift

    <<=(_:_:)

    Stores the result of shifting a value’s binary representation the specified number of digits to the left in the left-hand-side variable.

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

    Parameters

    lhs

    The value to shift.

    rhs

    The number of bits to shift lhs to the left.

    Overview

    The << operator performs a smart shift, which defines a result for a shift of any value.

    • Using a negative value for rhs performs a right shift using abs(rhs).

    • Using a value for rhs that is greater than or equal to the bit width of lhs is an overshift, resulting in zero.

    • Using any other value for rhs performs a left shift on lhs by that amount.

    The following example defines x as an instance of UInt8, an 8-bit, unsigned integer type. If you use 2 as the right-hand-side value in an operation on x, the value is shifted left by two bits.

    var x: UInt8 = 30                 // 0b00011110
    x <<= 2
    // x == 120                       // 0b01111000

    If you use 11 as rhs, x is overshifted such that all of its bits are set to zero.

    var y: UInt8 = 30                 // 0b00011110
    y <<= 11
    // y == 0                         // 0b00000000

    Using a negative value as rhs is the same as performing a right shift with abs(rhs).

    var a: UInt8 = 30                 // 0b00011110
    a <<= -3
    // a == 3                         // 0b00000011
    
    var b: UInt8 = 30                 // 0b00011110
    b >>= 3
    // b == 3                         // 0b00000011