Швидкий переклад двійкового до десяткового числа усно, ruX - s mind

У метро дорогою в мегу я придумав як швидко в голові переводити (розумно) будь-яке двійкове число в десяткове, якщо його диктують порозрядно, починаючи зі старшого, зрозуміло нікуди не записуючи і не підглядаючи.

Наприклад,101100.

Від вас потрібно тільки одне - якнайшвидше множити на2, що не так важко, та й уміти додавати одиничку :D

Отже, в чому полягає метод:

  1. Чекаємо поки назвуть першу одиницю, запам'ятовуємо.
  2. Якщо називають наступний розряд, то множимо те, що запам'ятали на2 і додаємо назване число.
  3. Якщо число скінчилося, то у голові – результат! Якщо ні, повертаємось на попередній крок.

Адже не складно? Подивимося з прикладу, нехай назване вище число101100. Нагадаю, що передбачається, що називають зі старшого розряду, тобто з1 01100.

  1. Запам'ятовуємо 1
  2. Називають наступний розряд (10 1100), отже множимо на 2, що запам'ятали, і додаємо тільки, що назване, тобто. 1 * 2 +0 = 2, запам'ятовуємо.
  3. Ще один (101 100): 2 * 2 +1 = 5
  4. Далі(1011 00): 5 * 2 +1 = 11
  5. Повторимо(10110 0): 11 * 2 +0 = 22
  6. І останнє(101100 ): 22 * ​​2 +0 = 44

Хто тісно стикався з побітовими операціями, відразу зрозуміє, що ідею мені навіяв побітовий зсув вліво і звичайний послідовний регістр зсуву :)