Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Число со степенью двойки.   Найти похожие ветки 

 
Юрий Зотов ©   (2006-05-21 22:02) [40]

> ArtemESC ©   (21.05.06 21:50) [38]

А черт его знает, не помню уже. Эта (или какая-то похожая) задачка когда-то встретилась мне в реале, причем функции Trunc не было, а писать двухкилометровый if - это бред, естественно. Не помню точно, в чем там был фокус, но помню, что с полчаса мозги поломать пришлось, и получилось какое-то простое и красивое решение.

> MBo ©   (21.05.06 21:53) [39]
Да, описка, там N-1 должно быть, конечно.


 
SergP ©   (2006-05-21 23:04) [41]


> if i and (i-1) = 0 then


В принципе работает. Только есть одно число с которым оно не будет работать.


 
MBo ©   (2006-05-21 23:34) [42]

>Юрий Зотов ©   (21.05.06 21:36) [37]

Не обрабатываются NaN и выход за диапазон:

function QuasiTrunc(s: Single): DWord;
var
 access: Integer;
 fexp: ShortInt;
 Mant: Int64;
begin
 access := PInteger(@s)^;
 fexp := ((access shr 23) and $FF) - 127;
 if fexp < 0 then
   Result := 0
 else begin
   Mant := (access and $7FFFFF) or $800000;
   Result := (Mant shl fexp) shr 23;
 end;  
end;


 
ArtemESC ©   (2006-05-22 00:56) [43]

SergP ©   (21.05.06 23:04) [41]
Ноль?


 
ArtemESC ©   (2006-05-22 00:57) [44]

Юрий Зотов ©   (21.05.06 22:02) [40]
Trunc не было...
А что было, то? Что можно использовать?


 
vidiv ©   (2006-05-22 06:27) [45]


> Еще немного подумайте, и узнаете как доставать самый младший
> ненулевой бит.

1 ?


 
SergP ©   (2006-05-22 08:12) [46]


> ArtemESC ©   (22.05.06 00:56) [43]
> SergP ©   (21.05.06 23:04) [41]
> Ноль?


Ага... Ноль не есть степенью как двойки, так вообще любого другого числа...


 
TUser ©   (2006-05-22 09:25) [47]

2all
Числа могут быть отрицательными :(


 
Marser ©   (2006-05-22 11:43) [48]

> [46] SergP ©   (22.05.06 08:12)
>
> > ArtemESC ©   (22.05.06 00:56) [43]
> > SergP ©   (21.05.06 23:04) [41]
> > Ноль?
>
>
> Ага... Ноль не есть степенью как двойки, так вообще любого
> другого числа...

Да, такой недостаток имеется. Правда устраняется он введением ещё одного условия.



Страницы: 1 2 вся ветка

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.037 c
2-1149012569
Галинка
2006-05-30 22:09
2006.06.18
Что такое хэш-таблица. Как ее реализовать на Дельфи?


15-1148455238
alles
2006-05-24 11:20
2006.06.18
Знатокам asp


1-1147212202
Германн
2006-05-10 02:03
2006.06.18
TListView


2-1148896285
IAmDanil
2006-05-29 13:51
2006.06.18
Как загрузить текстовый файл из интернета в memo1.lines?


2-1148844071
wsih
2006-05-28 23:21
2006.06.18
image:=TImage.Create(Application);