|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Vladimir Polyanin 2:467/95.999 15 Jun 2001 23:35:36 To : Mike Roschin Subject : ? --------------------------------------------------------------------------------
Hе успели меня закопать /14 Июн 01 11:56/, как /*Mike Roschin*/ уже завещал
_/All/_:
MR> Джентльмены, можно ли при помощи операций +, -, *, **(степень), /,
MR> \(целочисленное) и %% (по модулю) определить входждение бита N в число
MR> X, _иначе_ чем последовательным перебором битой от старшего к младшим?
MR>
MR> do exp:=15 to 0
MR> mask:=2**exp
MR> if X GE mask
MR> (
MR> if exp=N return TRUE
MR> X := X - mask
MR> )
MR>
MR> Так работает. Hо криво это. Хочется короче и проще, но что-то никак не
MR> придумывается. Подскажите, а?
Можно так:
K:=X/(2**N) ; Сдвиг на N разрядов вправо,
; теперь N-ый разряд стал младшим.
return K\2=1 ; Возвращаем состояние младшего бита.
С прощальным _оскалом_ *Vladimir Polyanin* ...
... And his name that sat on him was Death and Hell followed him...
--- [Team Сисопка 2000]
* Origin: Я телу обещал, что с ним теперь навеки... (2:467/95.999)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/144463b2a9e13.html, оценка из 5, голосов 10
|