Блог пользователя witua

Автор witua, 15 лет назад, По-русски
Как можно, используя побитовые операции, найти самый старший установленный бит числа за O(1)?
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
http://stackoverflow.com/questions/53161/find-the-highest-order-bit-in-c

Там описаны два способа условно за О(1).
(Вообще формулировка "за О(1)" не совсем корректна, как мне кажется, потому что только передать число - это уже О(длины числа) битовых операций.)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Спасибо.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

есть очень простой способ найти младший бит: x & -x

есть довольно громоздкий метод как реверснуть биты числа за O(1),

можно применить его два раза :)