Перевод числа из двоичной в десятичную с.с. - C (СИ)
Формулировка задачи:
Дана задача:
Задано неотрицательное целое число в двоичной системе счисления. Требуется перевести его в десятичную. Ввод В первой строке содержится исходное число не более чем из 50 000 цифр 0 и 1 без ведущих нулей. Вывод Вывод должен содержать это число в десятичной системе счисления без ведущих нулей. На этом же форуме нашёл код, который удовлетворяет решению данной задачи:#include <stdio.h>
#include <conio.h>
int main () {
char c;
int result=0;
while(scanf("%c",&c) ) {
if( (c<'0') || (c > '1') ) break;
result<<=1;
result+=c-'0';
};
printf("\n%d",result);
return 0;
}Решение задачи: «Перевод числа из двоичной в десятичную с.с.»
textual
Листинг программы
#include <stdio.h>
int main () {
char c;
unsigned __int64 result=0;
while(scanf("%c",&c) == 1) {
if( (c<'0') || (c > '1') ) break;
result<<=1;
result+=c-'0';
};
printf("%I64u\n",result);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки для работы с файлами и вывода данных
- Объявление функции main, которая является точкой входа в программу
- Объявление переменной типа char c, которая будет использоваться для считывания символов с клавиатуры
- Объявление переменной типа unsigned __int64 result, которая будет использоваться для хранения результата перевода числа из двоичной системы счисления в десятичную
- Организация цикла while, который будет выполняться до тех пор, пока пользователь не введет символ, не являющийся цифрой от 0 до 1
- Внутри цикла сдвиг результата вправо на 1 позицию с помощью оператора <<=
- Добавление к результату значения введенного символа, предварительно вычтя из него код символа '0'
- Выполнение условия для выхода из цикла while при вводе символа, не являющегося цифрой от 0 до 1
- Вывод результата на экран с помощью функции printf, используя форматный спецификатор %I64u для вывода значения типа unsigned __int64
- Возврат 0 из функции main, что означает успешное выполнение программы