eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Adler (+2 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Оффтоп —› упростить бинарную формулу
Посл.ответ Сообщение


Ранг: 1013.7 (!!!!)
Статус: Участник

Создано: 16 июня 2019 18:53 New!
Цитата · Личное сообщение · #1

(~n & w) | (n&(w-1))

игрался http://cpp.sh/56gb3

n & (w-1) очень похоже на n%w
но по отдельности это не упростить
может даже не в одну строку а в целую функцию


Ранг: 227.3 (наставник)
Статус: Участник

Создано: 16 июня 2019 21:44 · Поправил: f13nd New!
Цитата · Личное сообщение · #2

Правая часть остаток от деления на w, если w степень двойки. У левой арифметический смысл только в том, что среди слагаемых n - степеней 2 нет w, тогда w прибавляется к остатку.


Ранг: 1013.7 (!!!!)
Статус: Участник

Создано: 16 июня 2019 21:49 · Поправил: reversecode New!
Цитата · Личное сообщение · #3

псевдокод ?
а что он делает я и так знаю
построение дерева меркель

Добавлено спустя 7 минут
у меня сомнение в том что человек сразу писал такой код
и это либо компилер соптимайзил то понять что было в оригинале
либо оптимайзил уже человек, и хочется понять первичную формулу от которой он отталкивался

Ранг: 65.0 (постоянный)
Статус: Участник

Создано: 20 июня 2019 14:13 New!
Цитата · Личное сообщение · #4

ставим биты по маске n в слове w по странной зависимости от самого слова w?

(~n & w) | (n & (w-1))

если w-1==0 то w&~n
если w-1==-1 то w|n

|
w 000
n 010
out 010 // always the mask itself?

&
w 001
~n 101
out 001

другие примеры не обдумывал, страшно и безсмысленно

Добавлено спустя 10 минут
ой не ошибка в первом же примере с |, w==000...
но жопой чую это с масками магия, без бранчей в зависимости от w
наверно компиль берёт универсальную формулу эту и подставляет её куда не лень


Ранг: 1013.7 (!!!!)
Статус: Участник

Создано: 20 июня 2019 16:30 New!
Цитата · Личное сообщение · #5

не странный а обычный merkle tree
вот оригинальный алго с бранчами и интересен

Ранг: 65.0 (постоянный)
Статус: Участник

Создано: 20 июня 2019 19:17 New!
Цитата · Личное сообщение · #6

при чём здесь меркле то? меркле хэшики из хэшиков делает, в принципе
а тут одна бинарная операция и как её связывать с "построение дерева меркель" тебе только известно

вот нормальная, не странная версия алго, х bool, ноль или один
(~n & w) | (n & -x)
==
if (x) { w = w | n } // set bits
else { w = w & ~n } // clear bits

а у тебя w-1 вместо -х, вот и думай шо туда попадает
и как на шо влияет

чуть довавив
#if 1
printf("(");
printf("N ");
printb(n);
printf(" W ");
printb(w);
printf(" X ");
printb((~n & w)|(n&(w-1)));
printf(" SET ");
printb((n | w) );
printf(" CLE ");
printb((~n & w) );
//if ( ((n+1) % (w)) != ( (~n & w)|(n&(w-1)) )) printf("NEQ");
printf(") ");
#endif

заметил лишь только то шо длинна маски n не влияет на выход x, он всегда обрезаеца до длины слова w

больше думать не могу но оно уже ближе модуло...

Ранг: 65.0 (постоянный)
Статус: Участник

Создано: 2 августа 2019 17:41 New!
Цитата · Личное сообщение · #7

ну так чё какие результаты?


Ранг: 316.3 (мудрец)
Статус: Участник

Создано: 4 августа 2019 19:41 · Поправил: difexacaw New!
Цитата · Личное сообщение · #8

reversecode

Это не бинарная(булева) формула, а аналого-цифровая. Есть операция вычитания, если w не булева переменная, то выражение не известно как свернуть, я такое уже спрашивал --> Link <--

Если бы это был инкремент, то можно было бы использовать закон A - B = NOT(B) + A + 1. Как быть с деком хз.


Ранг: 1013.7 (!!!!)
Статус: Участник

Создано: 22 августа 2019 19:05 New!
Цитата · Личное сообщение · #9

мне надо не свернуть а наоборот развернуть
 eXeL@B —› Оффтоп —› упростить бинарную формулу

У вас должно быть 20 пунктов ранга, чтобы оставлять сообщения в этом подфоруме, но у вас только 0


Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS