Бързо двоично в десетично преобразуване устно, ruX - s mind
В метрото по пътя към мега измислих как бързо да преведа (разумно) всяко двоично число в десетично в главата си, ако е продиктувано малко по малко, започвайки от най-старото, разбира се, без да записвам никъде и без да надниквам.
Например101100.
Всичко, от което се нуждаете, е да умножите по2 възможно най-бързо, което не е толкова трудно, и да можете да събирате единица :D
И така, какъв е методът:
- Чакаме първия да се обади, запомнете.
- Ако бъде извикана следващата цифра, тогава умножаваме това, което помним, по2 и добавяме назованото число.
- Ако номерът свърши, тогава в главата - резултатът! Ако не, се връщаме към предишната стъпка.
Не е трудно, нали? Нека да разгледаме пример, нека номерът, посочен по-горе101100. Напомням, че се предполага, че се обаждат от най-значимата цифра, тоест от1 01100.
- Запомнете 1
- Те извикват следващата цифра (10 1100), така че умножаваме по 2, след това това, което помним, и добавяме само това, което се нарича, т.е. 1 * 2 +0 = 2, запомнете.
- Друго (101 100): 2 * 2 +1 = 5
- Следващ (1011 00): 5 * 2 +1 = 11
- Повторение (10110 0): 11 * 2 +0 = 22
- И последно (101100 ): 22 * 2 +0 = 44
Тези, които са се сблъсквали с побитови операции, веднага ще разберат, че идеята е вдъхновена от побитовото изместване наляво и обичайния последователен регистър за изместване :)