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