Schneller Weg, eine Maske mit n Einsen zu erstellen, beginnend an Position i

Was ist der schnellste Weg (in Bezug auf CPU-Zyklen in der gängigen modernen Architektur), um eine Maske mit @ zu erzeugelen Bits auf 1 gesetzt, beginnend an Positionpos:

template <class UIntType>
constexpr T make_mask(std::size_t pos, std::size_t len)
{
    // Body of the function
}

// Call of the function
auto mask = make_mask<uint32_t>(4, 10);
// mask = 00000000 00000000 00111111 11110000 
// (in binary with MSB on the left and LSB on the right)

Plus, gibt es irgendwelche Compiler-Eigenheiten oder BMI Funktion, die helfen kann?

Antworten auf die Frage(10)

Ihre Antwort auf die Frage