Бързо двоично в десетично преобразуване устно, 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

Тези, които са се сблъсквали с побитови операции, веднага ще разберат, че идеята е вдъхновена от побитовото изместване наляво и обичайния последователен регистър за изместване :)