Произвести реверс бит десятичного числа вводимого с клавиатуры при использовании поразрядных операций - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Решите пожалуйста. в долгу не останусь, экзамен горит Произвести реверс бит десятичного числа вводимого с клавиатуры при использовании поразрядных операций. иСХОДНОЕ ЧИСЛО и преобразованное вывести в текстовый файл в двух формах: в десятичной и шестнадцатеричной системах счисления. Предусмотреть защиту от неправильного ввода с предложеним повторного ввода. Хоть что нить напишите братцы

Решение задачи: «Произвести реверс бит десятичного числа вводимого с клавиатуры при использовании поразрядных операций»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. unsigned reverse_bits(unsigned n) {
  4.     unsigned m = 0;
  5.    
  6.     for ( ; n; n >>= 1 )
  7.         m = ( m << 1 ) | ( n & 1 );
  8.    
  9.     return m;
  10. }
  11.  
  12. char * binstr(unsigned n) {
  13.     static char buf[BUFSIZ];
  14.     char * head, * tail, tmp;
  15.    
  16.     for ( tail = buf; n; n >>= 1 )
  17.         *tail++ = '0' + ( n & 1 );
  18.     *tail = '\0';
  19.    
  20.     for ( head = buf, tail -= 1; head < tail; ++head, --tail ) {
  21.         tmp = *head;
  22.         *head = *tail;
  23.         *tail = tmp;
  24.     }
  25.    
  26.     return buf;
  27. }
  28.  
  29. int main(void) {
  30.     unsigned n, m;
  31.    
  32.     while ( printf("Number: ") && scanf("%u", &n) == 1 ) {
  33.         printf("Exists: %u -> %s\n", n, binstr(n));
  34.         m = reverse_bits(n);
  35.         printf("Reversed: %u -> %s\n", m, binstr(m));
  36.     }
  37.    
  38.     return 0;
  39. }

Объяснение кода листинга программы

  1. Включаем стандартную библиотеку ввода-вывода
  2. Функция reverse_bits() принимает десятичное число и возвращает число с обратными битами
  3. Инициализируем переменную m типом unsigned с нулевым значением
  4. Используем поразрядную операцию для получения последнего бита числа n, затем сдвигаем m влево на один разряд и объединяем с битом, который мы только что получили
  5. Повторяем шаг 4 до тех пор, пока число n не станет равным нулю
  6. Возвращаем полученное значение переменной m
  7. Функция binstr() принимает десятичное число и возвращает его двоичное представление в виде строки
  8. Инициализируем буфер (buf) для хранения двоичной строки
  9. Проходим по каждому биту числа n и добавляем его в буфер в виде символа '0' или '1'
  10. Добавляем нулевой символ в буфер для завершения строки
  11. Проходим по буферу с конца на начало и меняем местами символы для получения правильного представления двоичной строки
  12. Возвращаем буфер (buf)
  13. В функции main() считываем десятичное число с клавиатуры, пока пользователь не введет ноль
  14. Вызываем функцию binstr() для получения двоичного представления числа n
  15. Вызываем функцию reverse_bits() для получения числа с обратными битами
  16. Выводим на экран двоичное представление исходного и обратного чисел
  17. Продолжаем считывать и обрабатывать числа, пока пользователь не введет ноль
  18. Завершаем программу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

8   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы