|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Aleksey Malov 2:5052/30.8 12 Jul 2001 12:56:42 To : Oleg Akulov Subject : задачка --------------------------------------------------------------------------------
Wed 11 Jul 2001, at 21:50:32 Oleg Akulov told All about задачка.
OA> Есть двоичное четырёх-байтовое число.
OA> Как оптимально быстро можно определить,
OA> является ли оно степенью двойки?
1. Если в этом числе в единицу установлен всего один бит, то число - степень
двойки.
Сначала ищешь первый встреченный единичный бит, затем просматриваешь все
остальные биты, если встретилась еще хоть одна единичка, то число - не степень
двойки. 32 цикла максимум на проверку.
либо
2. Создаешь таблицу из 32-х двойных слов, являющихся степенью двойки и даешь
команду поиска твоего числа в этой таблице. Для i386 - rep scasd.
1 способ требует выполнения 32 циклов в случае, когда число является степенью
двойки.
2 способ требует выполнения 32 циклов сравнения в случае, когда число не
является степенью двойки.
По всей видимости, 1 способ выгоднее.
Лучше реализовывать на асме.
Bye, Oleg.
WBR, Vivid^Brainwave of the X-Project association.
--- Lara Croft за 4.50 $.
* Origin: http://brainwave.dax.ru (2:5052/30.8)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/276703c80eaa.html, оценка из 5, голосов 10
|