Переставить цифры двоичного представления заданного натурального числа в обратном порядке - C (СИ)
Формулировка задачи:
Помогите пожалуйста, преобразовать целое число, переставив цифры двоичного представления данного натурального числа в обратном порядке.
Решение задачи: «Переставить цифры двоичного представления заданного натурального числа в обратном порядке»
textual
Листинг программы
- int iNum = 32154325;
- int i;
- char strVal[50] = "";
- char strBuf[50] = "";
- for(i = 0; i<=31;i++)
- {
- sprintf(strBuf, "%d", (iNum >> i) & 1); // ?
- strcat(strVal, strBuf); // ?
- }
- printf("strVal = %s\r\n", strVal);
Объяснение кода листинга программы
В данном коде на языке C выполняется следующая последовательность действий:
- Задаётся начальное значение переменной
iNum
равное 32154325. - Задаётся счётчик
i
перебирающий двоичные разряды числаiNum
в обратном порядке от старшего к младшему. - В цикле
for
начиная сi = 0
и доi <= 31
включительно выполняется сдвиг числаiNum
вправо наi
разрядов и одновременное считывание младшего бита результата в переменную типаchar
strBuf
. - Результат сдвига числа
iNum
вправо наi
разрядов и младший бит этого числа (теперь старший бит) приводится к типуchar
и добавляется к строкеstrVal
. - После завершения цикла
for
выводится значение переменнойstrVal
с помощью функцииprintf
. Получаем, что в переменнойstrVal
будет содержаться строка543210
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д