| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Перевод числа в десятичную систему |
| Автор: JAYBE 10.1.2013, 10:10 | ||
| Добрый день! Есть задача: "Написать программу, которая преобразует введенное с клавиатуры восьмиразрядное двоичное число в десятичное". Помогите, пожалуйста, решить. Мой тупиковый вариант:
Правилен ли подход или нет? Сам очень novice в С++... |
| Автор: bsa 10.1.2013, 10:53 | ||
| JAYBE, используй std::string и std::getline для чтения числа в строку. Затем сделай проверки (например, что число не содержит ничего, кроме 0 и 1, и имеет длину не более 8 разрядов). Затем начиная с начала выполняй левый сдвиг целочисленной переменной (изначально она должна быть нулевой) и, если в текущей позиции в строке находится 1, делай установку нулевого бита:
|
| Автор: borisbn 10.1.2013, 10:56 | ||
трудно сказать, т.к. у тебя ничего не написано... лови
http://liveworkspace.org/code/3c6xjC$0 |
| Автор: JAYBE 10.1.2013, 13:33 | ||
| borisbn, спасибо. Воспользовался. Все предельно ясно кроме этой строчки:
Что здесь происходит? |
| Автор: borisbn 10.1.2013, 13:56 | ||||||||||||
если от символа '0' отнять '0', получится число 0. если от символа '1' отнять '0', получится число 1.
полученное число (0 или 1) сдвигаем влево на 7 - i бит.
делаем побитовое ИЛИ num и результата сдвига 0-ля или 1-цы. возьмём строку из моего примера
и посмотрим на каждом шаге цикла, что будет происходить со всеми переменными. а для вывода лучше использовать двоичный вид:
использование:
|
| Автор: bsa 10.1.2013, 13:59 |
| borisbn, вот зачем ты дал полностью готовый ответ? |
| Автор: borisbn 10.1.2013, 16:55 |
| bsa, согласен. подправил |
| Автор: JAYBE 11.1.2013, 10:17 |
| Все понятно, спасибо за разъяснения. Вопрос решён. |