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

  1. Задаётся начальное значение переменной iNum равное 32154325.
  2. Задаётся счётчик i перебирающий двоичные разряды числа iNum в обратном порядке от старшего к младшему.
  3. В цикле for начиная с i = 0 и до i <= 31 включительно выполняется сдвиг числа iNum вправо на i разрядов и одновременное считывание младшего бита результата в переменную типа char strBuf.
  4. Результат сдвига числа iNum вправо на i разрядов и младший бит этого числа (теперь старший бит) приводится к типу char и добавляется к строке strVal.
  5. После завершения цикла for выводится значение переменной strVal с помощью функции printf. Получаем, что в переменной strVal будет содержаться строка 543210.

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

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