Самое простое - создать таблицу поиска.
Этот комментарий здесь технически избегает итерации, но кто мы шутим, он по-прежнему делает такое же количество проверок: Как написать базу данных (2) в c / c ++
Закрытая форма будет log2 () , a la, log2() + 1
Но я не уверен, насколько эффективен это - возможно, у процессора есть инструкция для приема логарифмов базы 2?