Перевести целое число из одной системы счисления в другую, используя рекурсию - C (СИ)
Формулировка задачи:
- #include <stdio.h>
- int main(void)
- {
- int dec;
- int v;
- scanf_s("%d", &dec);
- v = 128;
- for (int i = 1; i <= 8; i++)
- {
- if (dec >= v)
- {
- printf("1");
- dec -= v;
- }
- else
- printf("0");
- v /= 2;
- }
- puts("\n\n");
- return 0;
- }
Решение задачи: «Перевести целое число из одной системы счисления в другую, используя рекурсию»
- char * uint2bin(unsigned n, char * buf) {
- char * tail = ( n > 1 ) ? uint2bin(n >> 1, buf) : buf; // <<
- sprintf(tail, "%d", n & 1);
- return tail + 1;
- }
Объяснение кода листинга программы
В данном коде представлена функция uint2bin
, которая принимает два аргумента: целое число n
и указатель на буфер buf
. Функция переворачивает число n
из десятичной системы счисления в двоичную систему счисления и записывает результат в буфер buf
.
Внутри функции используется рекурсия для деления числа n
на 2. Если число больше 1, то функция вызывает саму себя с аргументами n >> 1
(что означает деление n
на 2) и buf
. Если число равно 1, то функция просто возвращает буфер buf
.
Далее функция использует функцию sprintf
для записи в буфер tail
остатка от деления n
на 2 в десятичной системе счисления.
В конце функция возвращает указатель на следующую позицию в буфере, увеличенную на 1, чтобы вызов функции мог продолжить запись следующего разряда числа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д