|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Max Alekseyev 2:5015/60 18 Jul 2001 03:28:58 To : Ђ¤аҐ© Њ ЄбЁ¬ҐЄ® Subject : найти ближайшую бОльшую степень двойки минус 1 -------------------------------------------------------------------------------- Replying to a message of Андрей Максименко to All: АМ> Число - целое 8 байт (Int64) АМ> необх найти ближайшую бОльшую степень двойки минус 1, т.е. АМ> для 4...7 - это 7; АМ> для 32...63 - это 63; вот навскидку: long long f(long long t) { while(t&(t+1)) t|=(t>>1); return t; } цикл крутится ровно столько раз, какова наибольшая длина цепочки нулей в двоичной записи данного числа. Regards, ш.ш Max ~ =.= QU/2 playing: ДЕЛЬФИH - Радиоволна --- OS/2 Uptime: 0d 10h 20m 7s 406ms * Origin: Хмурый дьячок с подбитой щекой тянет-выводит за упокой. (2:5015/60) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.algorithms/18133b5504f0.html, оценка из 5, голосов 10
|