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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <limits.h>
  4. #include <ctype.h>
  5.  
  6. unsigned bin2num(const char * bs) {
  7.     return ( *bs ) ? ( (*bs - '0') << (strlen(bs) - 1) ) | bin2num(bs + 1) : 0;
  8. }
  9.  
  10. #define INT_BIT ( CHAR_BIT * sizeof(int) )
  11. typedef char binstr_t[INT_BIT + 1];
  12.  
  13. char * get_bin(binstr_t bs) {
  14.     int pos = 0, ch;
  15.    
  16.     while ( pos < INT_BIT && (ch = getchar()) != EOF && (ch == '0' || ch == '1') )
  17.         bs[pos++] = ch;
  18.     bs[pos] = '\0';
  19.    
  20.     return ( ch == '\0' || isspace(ch) ) ? bs : NULL;
  21. }
  22.  
  23. int main(void) {
  24.     binstr_t bs;
  25.    
  26.     while ( printf("Binary: ") && get_bin(bs) )
  27.         printf("Dec: %u\n", bin2num(bs));
  28.        
  29.     return 0;
  30. }

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

  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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы