Перевести двоичное число заданное в виде строки в десятичное - C (СИ)

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

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

Перевести двойчное число в десятичное, число задается строкой, функция должна возвращать десятичное число.

Решение задачи: «Перевести двоичное число заданное в виде строки в десятичное»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <ctype.h>
 
unsigned bin2num(const char * bs) {
    return ( *bs ) ? ( (*bs - '0') << (strlen(bs) - 1) ) | bin2num(bs + 1) : 0;
}
 
#define INT_BIT ( CHAR_BIT * sizeof(int) )
typedef char binstr_t[INT_BIT + 1];
 
char * get_bin(binstr_t bs) {
    int pos = 0, ch;
    
    while ( pos < INT_BIT && (ch = getchar()) != EOF && (ch == '0' || ch == '1') )
        bs[pos++] = ch;
    bs[pos] = '\0';
    
    return ( ch == '\0' || isspace(ch) ) ? bs : NULL;
}
 
int main(void) {
    binstr_t bs;
    
    while ( printf("Binary: ") && get_bin(bs) )
        printf("Dec: %u\n", bin2num(bs));
        
    return 0;
}

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

  1. Включаем необходимые заголовочные файлы для работы с строками, числами и символами.
  2. Определяем функцию bin2num, которая принимает строку в двоичной системе счисления и возвращает десятичное число. Рекурсивный вызов функции bin2num осуществляется до тех пор, пока не будет получен конечный результат.
  3. Объявляем макрос INT_BIT, который вычисляет количество бит в типе данных int, используемого в программе.
  4. Определяем тип данных binstr_t, который представляет собой строку, предназначенную для хранения двоичного числа.
  5. В функции get_bin осуществляется считывание двоичной строки из стандартного ввода. Используется цикл while, который выполняется до тех пор, пока не будет достигнута конечная часть строки (после ввода 0 или 1). Считанный символ добавляется в строку bs.
  6. В функции main осуществляется считывание двоичной строки и перевод ее в десятичное число с помощью функции bin2num. Цикл while считывает строку до тех пор, пока не будет введен символ новой строки.
  7. Возвращаемое значение функции bin2num выводится на экран с помощью функции printf.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы