Я хочу применить битовую маску, чтобы получить только верхнюю половину бит. Поэтому для uint32 было бы это:Бит-маска в зависимости от типа данных
uint32_t version_part = oldID & 0xFFFF0000;
Это все хорошо, когда тип данных жёстко, но если это была шаблонная функция, и я хотел, чтобы обеспечить arbritary типа данных (uint8_t, uint16_t, ...) Я хочу изменить размер битмаски пропорционально (0xF0, 0xFF00, ...) и намного лучше во время компиляции.
Учитывая, что существует конечное число типов данных, я полагаю, вы могли бы просто сделать if-cases (static if?), Но мне было интересно, есть ли более хороший способ сделать это.
выглядит многообещающим, будет попробовать, спасибо! – KaiserJohaan
С другой стороны, слишком много деления? Во второй строке функции, почему SZ нужно снова сократить вдвое? – KaiserJohaan
@ KaiserJohaan Да, вы правы, позвольте мне исправить это. –