Циклически сдвинуть число влево на n разрядов - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Никак не могу понять с чего начать, посоветуйте что то пожалуйста:Заданное целое число х. Составить программу, циклически сдвигает х влево на n разрядов

Решение задачи: «Циклически сдвинуть число влево на n разрядов»

textual
Листинг программы
uint32_t foo (uint32_t num, uint32_t n)
{
    if (n == 32)
        return num;
    else if (n > 32)
        n %= 32;
 
    num = (num << n) | (num >> (32 - n));
 
    return num;
}

Объяснение кода листинга программы

  1. Входные данные: uint32_t num - 32-битное беззнаковое число, представляющее собой значение, которое необходимо циклически сдвинуть, и uint32_t n - 32-битное беззнаковое число, определяющее количество разрядов, на которое необходимо сдвинуть число.
  2. Проверка условия: если n равно 32, то функция возвращает входное значение num.
  3. Проверка условия: если n больше 32, то значение n приводится к модулю 32 (остаток от деления на 32).
  4. Выполняется циклический сдвиг числа num влево на n разрядов:
    • числовое значение num сдвигается влево на n разрядов,
    • при этом высвобождаются справа разряды, которые заполняются значением перестановки разрядов исходного числа.
  5. Возвращается полученное после сдвига число.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.462 из 5
Похожие ответы