1. 8.0.1
    Type OperatorSwiftBSONSwift

    &<<(_:_:)

    Returns the result of shifting a value’s binary representation the specified number of digits to the left, masking the shift amount to the type’s bit width.

    static func &<< <Other>(lhs: Self, rhs: Other) -> Self where Other : BinaryInteger

    Parameters

    lhs

    The value to shift.

    rhs

    The number of bits to shift lhs to the left. If rhs is outside the range 0..<lhs.bitWidth, it is masked to produce a value within that range.

    Overview

    Use the masking left shift operator (&<<) when you need to perform a shift and are sure that the shift amount is in the range 0..<lhs.bitWidth. Before shifting, the masking left shift operator masks the shift to this range. The shift is performed using this masked value.

    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 shift amount requires no masking.

    let x: UInt8 = 30                 // 0b00011110
    let y = x &<< 2
    // y == 120                       // 0b01111000

    However, if you use 8 as the shift amount, the method first masks the shift amount to zero, and then performs the shift, resulting in no change to the original value.

    let z = x &<< 8
    // z == 30                        // 0b00011110

    If the bit width of the shifted integer type is a power of two, masking is performed using a bitmask; otherwise, masking is performed using a modulo operation.