Переставить цифры двоичного представления заданного натурального числа в обратном порядке - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д