В метро по дороге в мегу я придумал как быстро в голове переводить (разумно) любое двоичное число в десятичное, если его диктуют по поразрядно, начиная со старшего, разумеется никуда не записывая и не подглядывая.
Например 101100.
От вас требуется только одно - как можно быстрее умножать на 2, что не так трудно, ну и уметь прибавлять единичку :D
Итак, в чём заключается метод:
- Ждём пока назовут первую единичку, запоминаем.
- Если называют следующий разряд, то умножаем то что запомнили на 2 и добавляем названное число.
- Если число кончилось, то в голове - результат! Если нет, возвращаемся на предыдущий шаг.
Ведь не сложно? Посмотрим на примере, пусть названное выше число 101100. Напомню, что предполагается, что называют со старшего разряда, т.е с 101100.
- Запоминаем 1
- Называют следующий разряд(101100), значит умножаем на 2, то что запомнили, и прибавляем только, что названное, т.е. 1 * 2 + 0 = 2, запоминаем.
- Ещё один (101100): 2 * 2 + 1 = 5
- Дальше(101100): 5 * 2 + 1 = 11
- Повторим(101100): 11 * 2 + 0 = 22
- И последнее(101100): 22 * 2 + 0 = 44
Вот и ответ: 44!
Ведь не так и сложно? Аналогично можно оперировать более длинными цепочками нулей и единиц. Собеседника вы поразите, а самому проще станет читать двоичные числа
Кто тесно сталкивался с побитовыми операциями сразу поймёт, что идею мне навеял побитовый сдвиг влево и обычный последовательный регистр сдвига :)
Теперь настало время потренировать себя :)