Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
Юрий Зотов ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.012 c
15-1148220731
DillerXX
2006-05-21 18:12
2006.06.18
type AString = array [1..maxInput] of string;


15-1148722099
Petr V. Abramov
2006-05-27 13:28
2006.06.18
ipnat.sys


15-1148645070
Логин
2006-05-26 16:04
2006.06.18
Удаленная работа


2-1148964290
syte_ser78
2006-05-30 08:44
2006.06.18
суммирование времени


15-1148374070
DillerXX
2006-05-23 12:47
2006.06.18
Помогите с визуальным обновлением :(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский