Изменить порядок следования нечетных битов в числе на обратный - 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
Объяснение кода листинга программы
- Объявляется целочисленная переменная
h
со значением 12345. - Объявляется целочисленная переменная
h0
и присваивается ей значение переменнойh
, чтобы сохранить начальное значениеh
. - Объявляется целочисленная переменная
mask
и инициализируется значением 0. - Запускается цикл
for
для перебора половины байтов переменнойh
. - В каждой итерации цикла в переменную
mask
включаются нечетные биты текущего байта числаh
в обратном порядке, а само числоh
сдвигается вправо на два бита. - По завершении цикла в переменной
mask
будут содержаться нечетные биты числаh
в обратном порядке, остальные биты будут равны 0.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д