Конвертер перевода из десятичной системы счисления в шестнадцатиричную и двоичную - 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; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяются макросы BUF_BIN и BUF_HEX для определения размера буфера
- Объявляются функции dec_to_bin и dec_to_hex
- Создаются две переменные типа char - bin и hex, которые будут использоваться как буферы для конвертирования чисел
- Вызывается функция dec_to_bin, передавая в неё буфер bin и число INT_MIN в качестве аргументов. Результат выводится на экран
- Вызывается функция dec_to_bin, передавая в неё буфер bin и число INT_MAX в качестве аргументов. Результат выводится на экран
- Выводится символ новой строки
- Вызывается функция dec_to_hex, передавая в неё буфер hex и число INT_MIN в качестве аргументов. Результат выводится на экран
- Вызывается функция dec_to_hex, передавая в неё буфер hex и число INT_MAX в качестве аргументов. Результат выводится на экран
- Программа ожидает ввода символа с клавиатуры (любого символа) для завершения работы
- Функция dec_to_bin принимает на вход указатель на буфер, в который будет записан результат конвертации, и целое число n. Результатом работы функции является указатель на начало буфера с результатом
- Внутри функции используется цикл do-while, который выполняется до тех пор, пока ненулевой бит не станет равным нулю
- Внутри цикла выполняется операция сдвига бита на 1 вправо и затем результат записывается в буфер
- После выполнения цикла в буфере остается только один бит, который записывается в буфер как символ '0' или '1'
- Если бит равен 0, то в буфер записывается символ '0', иначе записывается символ '1'
- Функция возвращает указатель на начало буфера с результатом
- Функция dec_to_hex принимает на вход указатель на буфер, в который будет записан результат конвертации, и целое число n. Результатом работы функции является указатель на начало буфера с результатом
- Внутри функции используется цикл do-while, который выполняется до тех пор, пока ненулевой бит не станет равным нулю
- Внутри цикла выполняется операция сдвига бита на 4 вправо и затем результат записывается в буфер
- Если бит равен 0, то в буфер записывается символ '0', иначе записывается символ 'A'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д