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?