Переставить цифры двоичного представления заданного натурального числа в обратном порядке - 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разрядов и одновременное считывание младшего бита результата в переменную типаcharstrBuf. - Результат сдвига числа
iNumвправо наiразрядов и младший бит этого числа (теперь старший бит) приводится к типуcharи добавляется к строкеstrVal. - После завершения цикла
forвыводится значение переменнойstrValс помощью функцииprintf. Получаем, что в переменнойstrValбудет содержаться строка543210.