Quiz

Oct 08, 2010 02:10

a = ((((a/(a-(a&(a-1)))+1)/((a/(a-(a&(a-1)))+1)-((a/(a-(a&(a-1)))+1)&(a/(a-(a&(a-1)))))))*(a-(a&(a-1)))*2+1)*(((a/(a-(a&(a-1)))+1)-((a/(a-(a&(a-1)))+1)&(a/(a-(a&(a-1))))))/2))-1;

Внимание, вопрос: что делает эта строчка кода?

P.S. Нет, она реально делает что-то осмысленное и весьма полезное. :)

informatics

Leave a comment

goodsoft October 7 2010, 23:45:43 UTC
оно как-то забавно поворачивает последние биты.
полезного не особо вижу

да, оно берёт последнюю группу единиц.
крайнюю левую сдвигает на бит влево, остальные - до упора вправо

Reply

eduardische October 7 2010, 23:48:44 UTC
Ну, можно сказать что поворачивает. Но очень даже полезно)

Reply

eduardische October 7 2010, 23:49:36 UTC
Всё, добей! :D

Reply

goodsoft October 7 2010, 23:50:33 UTC
окей, оно берёт эту группу единиц и тупо прибавляет её к числу
где польза?

спиздел

Reply

eduardische October 7 2010, 23:54:01 UTC
"
да, оно берёт последнюю группу единиц.
крайнюю левую сдвигает на бит влево, остальные - до упора вправо
"

А теперь вспоминай комбинаторику и найдёшь пользу :)

Reply

goodsoft October 7 2010, 23:55:32 UTC
я её нихера не помню и сдаюсь

Reply

xcept_dot_ion October 8 2010, 08:27:09 UTC
это функция Берилли!!!111

Reply

astiob October 8 2010, 18:50:15 UTC
Принимая незачёркнутый Пашин пост за правду (потому что мне лень проверять, а разбираться собственно в коде ещё ленивее), очевидно, что, если переменная a является отображением множества с фиксированным количеством элементов в виде битмаска, эта строчка создаёт следующее такое множество в лексикографическом порядке отображения.

Reply

astiob October 8 2010, 18:51:23 UTC
Что есть весьма круто. Надо эту формулу куда-нибудь записать.

Reply

astiob October 8 2010, 18:58:18 UTC
Плюс-минус очевидность в зависимости от текущего состояния читателя.

Reply


Leave a comment

Up