Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Stepan Polovnikov                    2:5056/16.47   16 Jul 2001  20:59:21
 To : Ђ­¤аҐ© Њ ЄбЁ¬Ґ­Є®
 Subject : найти ближайшую бОльшую степень двойки минус 1
 -------------------------------------------------------------------------------- 
 
 
 АМ> Число - целое 8 байт (Int64)
 АМ> необх найти ближайшую бОльшую степень двойки минус 1, т.е.
 АМ> для 4...7 - это 7;
 АМ> для 32...63 - это 63;
 АМ> Делаю так:
 АМ> i := i or (i shr 1);
 АМ> i := i or (i shr 2);
 АМ> i := i or (i shr 4);
 АМ> i := i or (i shr 8);
 АМ> i := i or (i shr 16);
 АМ> i := i or (i shr 32);
 АМ> Второй вариант короче, но в 6 раз медленнее:
 АМ> i := 2 shl Floor(log2(i))-1  // Floor - целая часть числа
 АМ> Есть ли более оптимальный вариант? Hичего в голову не приходит.
 
 ; edx:eax=int64
         mov ebx,1
         bsr ecx,edx
         je  @@low
         shl ebx,cl
         dec ebx
         or  eax,-1
         or  edx,ebx
         jmp @@zero
 @@low:  bsr ecx,eax
         je  @@zero
         shl ebx,cl
         dec ebx
         or  eax,ebx
 @@zero:
 ; edx:eax=result
 
 Bye!
 Stepan
 --- GoldED+/W32 1.1.5-20010529
  * Origin: NETMAIL (2:5056/16.47)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 найти ближайшую бОльшую степень двойки минус 1   Ђ­¤аҐ© Њ ЄбЁ¬Ґ­Є®   16 Jul 2001 12:29:30 
 найти ближайшую бОльшую степень двойки минус 1   Stepan Polovnikov   16 Jul 2001 20:59:21 
 найти ближайшую бОльшую степень двойки минус 1   Vladislav Irdullin   16 Jul 2001 22:57:34 
 найти ближайшую бОльшую степень двойки минус 1   Max Alekseyev   18 Jul 2001 03:28:58 
 Re: найти ближайшую бОльшую степень двойки минус 1   Yuriy Kaminskiy   19 Jul 2001 22:03:33 
 найти ближайшую бОльшую степень двойки минус 1   Max Alekseyev   20 Jul 2001 16:11:58 
 найти ближайшую бОльшую степень двойки минус 1   Stanislav Shwartsman   20 Jul 2001 16:30:36 
 найти ближайшую бОльшую степень двойки минус 1   Kluchnikov Eugene   20 Jul 2001 20:00:32 
 найти ближайшую бОльшую степень двойки минус 1   Gleb   24 Jul 2001 21:55:11 
 найти ближайшую бОльшую степень двойки минус 1   Kluchnikov Eugene   25 Jul 2001 00:19:52 
 [*] Re: найти ближайшую бОльшую степень двойки минус 1   Comoderator Of Ru Algorithms   25 Jul 2001 17:26:24 
 Re: найти ближайшую бОльшую степень двойки минус 1   Comoderator Of Ru Algorithms   25 Jul 2001 17:20:58 
 найти ближайшую бОльшую степень двойки минус 1   Max Alekseyev   21 Jul 2001 00:31:18 
 найти ближайшую бОльшую степень двойки минус 1   Stanislav Shwartsman   21 Jul 2001 09:43:02 
 найти ближайшую бОльшую степень двойки минус 1   Max Alekseyev   21 Jul 2001 14:03:36 
 Re: найти ближайшую бОльшую степень двой ки минус 1   Andrew Ezhguroff   21 Jul 2001 15:47:14 
 найти ближайшую бОльшую степень двой ки минус 1   Max Alekseyev   21 Jul 2001 19:40:20 
 Re: найти ближайшую бОльшую степень двой ки минус 1   Andrew Ezhguroff   22 Jul 2001 02:17:25 
 найти ближайшую бОльшую степень двой ки минус 1   Dmitriy Litskalov   22 Jul 2001 10:52:54 
 найти ближайшую бОльшую степень двой ки минус 1   Dmitriy Litskalov   22 Jul 2001 12:33:58 
Архивное /ru.algorithms/223903b531ed0.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional