Перевед из двоичной системы в десятичную - C (СИ)
Формулировка задачи:
МОжет кто подкинет идею, нужно написать программу которая переводит числа из двоичной системы в десятичную
Решение задачи: «Перевед из двоичной системы в десятичную»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
unsigned bin2dec(const char * binstr) {
return ( *binstr ) ? ( ( *binstr - '0' ) << ( strlen(binstr) - 1 ) ) + bin2dec(binstr + 1) : 0;
}
int main(void) {
printf("%u\n", bin2dec("101"));
printf("%u\n", bin2dec("1111111"));
return 0;
}
Объяснение кода листинга программы
- В функции bin2dec(), переменная binstr является указателем на строку, содержащую двоичное число.
- Если binstr не равно NULL, то из символа, на который указывает binstr, вычитается '0', и результат сдвигается вправо на количество позиций, равное длине строки, уменьшенной на 1.
- Затем вызывается рекурсивно функция bin2dec() для следующей цифры двоичного числа (binstr + 1).
- Если binstr равно NULL, то возвращается 0.
- В функции main() вычисляется двоичное число
101и выводится на экран. - Затем вычисляется двоичное число
1111111и выводится на экран. - В конце функции main() возвращается 0, что означает успешный конец работы программы.