Как выполнить, вращаются, переключают C на нижний регистр [дубликат]

9
задан Summer_More_More_Tea 14 May 2010 в 15:43
поделиться

1 ответ

(предупреждение для будущих читателей): код Википедии создает субоптимальный asm (gcc включает ветку или cmov). См. Лучшие практики для операций кругового сдвига (поворота) в C ++ для эффективного вращения без UB.


Из Википедии :

unsigned int _rotl(unsigned int value, int shift) {
    if ((shift &= 31) == 0)
      return value;
    return (value << shift) | (value >> (32 - shift));
}

unsigned int _rotr(unsigned int value, int shift) {
    if ((shift &= 31) == 0)
      return value;
    return (value >> shift) | (value << (32 - shift));
}
15
ответ дан 4 December 2019 в 11:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: