Конвертер перевода из десятичной системы счисления в шестнадцатиричную и двоичную - C (СИ)

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

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

Здравствуйте !.Помогите пожалуйста написать программу перевода Десятичной СС в 16ую и 2ую .Буду благодарен!

Решение задачи: «Конвертер перевода из десятичной системы счисления в шестнадцатиричную и двоичную»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <limits.h>
  3. #define BUF_BIN  ((sizeof(int) << 3) + 1)
  4. #define BUF_HEX  ((sizeof(int) << 1) + 1)
  5. char* dec_to_bin(char* d, int n);
  6. char* dec_to_hex(char* d, int n);
  7.  
  8. int main(void){
  9.     char bin[BUF_BIN], hex[BUF_HEX];
  10.     puts( dec_to_bin(bin, INT_MIN) );
  11.     puts( dec_to_bin(bin, INT_MAX) );
  12.     puts("");
  13.     puts( dec_to_hex(hex, INT_MIN) );
  14.     puts( dec_to_hex(hex, INT_MAX) );
  15.     getchar();
  16.     return 0;
  17. }
  18.  
  19. //10 -> 2
  20. char* dec_to_bin(char* d, int n){
  21.     char c, *p, *t = d;
  22.     unsigned int x = (unsigned int)n;
  23.     do {
  24.         *d++ = (char)((x & 0x1) + '0');
  25.     } while((x >>= 1) != 0);
  26.     *d = '\0';
  27.  
  28.     for(--d, p = t; p < d; ++p, --d){
  29.         c  = *p;
  30.         *p = *d;
  31.         *d = c;
  32.     }
  33.     return t;
  34. }
  35.  
  36. //10 -> 16
  37. char* dec_to_hex(char* d, int n){
  38.     char c, *p, *t = d;
  39.     unsigned int y, x = (unsigned int)n;
  40.     do {
  41.         y = x & 0xF;
  42.         if(y < 10)
  43.             *d++ = (char)(y + '0');
  44.         else
  45.             *d++ = (char)(y - 10 + 'A');
  46.     } while((x >>= 4) != 0);
  47.     *d = '\0';
  48.  
  49.     for(--d, p = t; p < d; ++p, --d){
  50.         c  = *p;
  51.         *p = *d;
  52.         *d = c;
  53.     }
  54.     return t;
  55. }

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

  1. Включаются необходимые заголовочные файлы
  2. Определяются макросы BUF_BIN и BUF_HEX для определения размера буфера
  3. Объявляются функции dec_to_bin и dec_to_hex
  4. Создаются две переменные типа char - bin и hex, которые будут использоваться как буферы для конвертирования чисел
  5. Вызывается функция dec_to_bin, передавая в неё буфер bin и число INT_MIN в качестве аргументов. Результат выводится на экран
  6. Вызывается функция dec_to_bin, передавая в неё буфер bin и число INT_MAX в качестве аргументов. Результат выводится на экран
  7. Выводится символ новой строки
  8. Вызывается функция dec_to_hex, передавая в неё буфер hex и число INT_MIN в качестве аргументов. Результат выводится на экран
  9. Вызывается функция dec_to_hex, передавая в неё буфер hex и число INT_MAX в качестве аргументов. Результат выводится на экран
  10. Программа ожидает ввода символа с клавиатуры (любого символа) для завершения работы
  11. Функция dec_to_bin принимает на вход указатель на буфер, в который будет записан результат конвертации, и целое число n. Результатом работы функции является указатель на начало буфера с результатом
  12. Внутри функции используется цикл do-while, который выполняется до тех пор, пока ненулевой бит не станет равным нулю
  13. Внутри цикла выполняется операция сдвига бита на 1 вправо и затем результат записывается в буфер
  14. После выполнения цикла в буфере остается только один бит, который записывается в буфер как символ '0' или '1'
  15. Если бит равен 0, то в буфер записывается символ '0', иначе записывается символ '1'
  16. Функция возвращает указатель на начало буфера с результатом
  17. Функция dec_to_hex принимает на вход указатель на буфер, в который будет записан результат конвертации, и целое число n. Результатом работы функции является указатель на начало буфера с результатом
  18. Внутри функции используется цикл do-while, который выполняется до тех пор, пока ненулевой бит не станет равным нулю
  19. Внутри цикла выполняется операция сдвига бита на 4 вправо и затем результат записывается в буфер
  20. Если бит равен 0, то в буфер записывается символ '0', иначе записывается символ 'A'

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


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

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

11   голосов , оценка 4 из 5

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

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

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