Перевести двоичное число заданное в виде строки в десятичное - 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;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с строками, числами и символами.
- Определяем функцию bin2num, которая принимает строку в двоичной системе счисления и возвращает десятичное число. Рекурсивный вызов функции bin2num осуществляется до тех пор, пока не будет получен конечный результат.
- Объявляем макрос INT_BIT, который вычисляет количество бит в типе данных int, используемого в программе.
- Определяем тип данных binstr_t, который представляет собой строку, предназначенную для хранения двоичного числа.
- В функции get_bin осуществляется считывание двоичной строки из стандартного ввода. Используется цикл while, который выполняется до тех пор, пока не будет достигнута конечная часть строки (после ввода 0 или 1). Считанный символ добавляется в строку bs.
- В функции main осуществляется считывание двоичной строки и перевод ее в десятичное число с помощью функции bin2num. Цикл while считывает строку до тех пор, пока не будет введен символ новой строки.
- Возвращаемое значение функции bin2num выводится на экран с помощью функции printf.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д