Конвертер перевода из десятичной системы счисления в шестнадцатиричную и двоичную - 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'
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д