psilogic: (Default)
psilogic ([personal profile] psilogic) wrote2007-03-06 03:50 pm

C - прикол

Как быстро проверить, является ли число степенью двойки?
На входе дано беззнаковое целое ненулевой разрядности, допускающее все операции языка C для типа unsigned. На выходе должно быть bool.

Циклы, ясное дело, не приветствуются. Мой ответ пока заскринен.

[identity profile] charon.livejournal.com 2007-03-06 02:10 pm (UTC)(link)
Ассемблерной вставкой: вычесть 1 и посмотреть флаг четности.

[identity profile] psilogic.livejournal.com 2007-03-06 02:17 pm (UTC)(link)
смотря что этот флаг показывает...

[identity profile] charon.livejournal.com 2007-03-06 02:22 pm (UTC)(link)
четность операции.

[identity profile] charon.livejournal.com 2007-03-06 02:30 pm (UTC)(link)
а, нет. Вру.

[identity profile] charon.livejournal.com 2007-03-06 02:38 pm (UTC)(link)
надо не вычитать, надо делить.