Изменить порядок следования нечетных битов в числе на обратный - C (СИ)

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

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

Написать программу, которая получает случайное целое типа int, выводит его двоичное представление на экран, выполняет преобразование в соответствии с вариантом (см. ниже) затем выводит на экран двоичное представление результата преобразования.

Изменить порядок следования нечетных битов в числе на обратный.

Пример:

11110000 -> 01011010 * Замечание 1. В результате преобразования должно измениться исходное число, недостаточно просто вывести результат преобразования на экран. Замечание 2. Если операция предусматривает использование одного или нескольких случайных параметров (например, сдвиг на случайное число битов), их значения следует выводить на экран. Замечание 3. Преобразование должно осуществляться с помощью битовых операци (сдвиги, логические операции). Использование стандартных массивов или контейнеров STL для представления битов и байтов числа запрещено.

Решение задачи: «Изменить порядок следования нечетных битов в числе на обратный»

textual
Листинг программы
int h = 12345;
int h0 = h; // сохраняем начальное значение, поскольку переменная h будет испорчена
int mask = 0;
 
for (int i = 0; i < sizeof(h)/2; i++)
{
    mask = (mask << 2) | (h & 1);
    h >>= 2;
}
 
// mask будет содержать нечётные биты h в обратном порядке, остальные биты = 0

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

  1. Объявляется целочисленная переменная h со значением 12345.
  2. Объявляется целочисленная переменная h0 и присваивается ей значение переменной h, чтобы сохранить начальное значение h.
  3. Объявляется целочисленная переменная mask и инициализируется значением 0.
  4. Запускается цикл for для перебора половины байтов переменной h.
  5. В каждой итерации цикла в переменную mask включаются нечетные биты текущего байта числа h в обратном порядке, а само число h сдвигается вправо на два бита.
  6. По завершении цикла в переменной mask будут содержаться нечетные биты числа h в обратном порядке, остальные биты будут равны 0.

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


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

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

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