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

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

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

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

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

textual
Листинг программы
#include <stdio.h>
#include <limits.h>
#define BUF_BIN  ((sizeof(int) << 3) + 1)
#define BUF_HEX  ((sizeof(int) << 1) + 1)
char* dec_to_bin(char* d, int n);
char* dec_to_hex(char* d, int n);
 
int main(void){
    char bin[BUF_BIN], hex[BUF_HEX];
    puts( dec_to_bin(bin, INT_MIN) );
    puts( dec_to_bin(bin, INT_MAX) );
    puts("");
    puts( dec_to_hex(hex, INT_MIN) );
    puts( dec_to_hex(hex, INT_MAX) );
    getchar();
    return 0;
}
 
//10 -> 2
char* dec_to_bin(char* d, int n){
    char c, *p, *t = d;
    unsigned int x = (unsigned int)n;
    do {
        *d++ = (char)((x & 0x1) + '0');
    } while((x >>= 1) != 0);
    *d = '\0';
 
    for(--d, p = t; p < d; ++p, --d){
        c  = *p;
        *p = *d;
        *d = c;
    }
    return t;
}
 
//10 -> 16
char* dec_to_hex(char* d, int n){
    char c, *p, *t = d;
    unsigned int y, x = (unsigned int)n;
    do {
        y = x & 0xF;
        if(y < 10)
            *d++ = (char)(y + '0');
        else
            *d++ = (char)(y - 10 + 'A');
    } while((x >>= 4) != 0);
    *d = '\0';
 
    for(--d, p = t; p < d; ++p, --d){
        c  = *p;
        *p = *d;
        *d = c;
    }
    return t;
}

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

  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
Похожие ответы