Швидкий переклад двійкового до десяткового числа усно, 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
Хто тісно стикався з побітовими операціями, відразу зрозуміє, що ідею мені навіяв побітовий зсув вліво і звичайний послідовний регістр зсуву :)