Какой самый быстрый способ (с точки зрения циклов ЦП в общей современной архитектуре) - создать маску с битами len
, установленными в 1, начиная с позиции pos
:
template
constexpr T make_mask(std::size_t pos, std::size_t len)
{
// Body of the function
}
// Call of the function
auto mask = make_mask(4, 10);
// mask = 00000000 00000000 00111111 11110000
// (in binary with MSB on the left and LSB on the right)
Plus, Есть ли какие-нибудь встроенные функции компилятора или BMI , которые могут помочь?