Всем привет! Задача банальна и проста: определить пересечение ч/з ноль. 1) Дан массив данных, точнее он постоянно поступает. Значение в пределах int32. требование за минимальное кол-во времени (наиболее быстро) определить переход ч/з ноль. Не использовать много памяти. Сигнал случайный. может попастся 2 и более нулей подряд. 2) те же критерии, но переменные типа float Заранее благодарен ---===PavPS===---
ты не поверищь, катит, но знаки надо где-то сохранять, пот 1 23 5 0 0 -1 -2 6 все эти числа поступают отдельно при каждом новом вызове, так сказать процедуры , но хранить их ВСЕ в памяти слишком много - это расход памяти раз, скорость чтения записи два, и самое главное как быстро сравнить знаки. sign и if a*b < 0 then не предлагать.
Сохранить знаковый бит в памяти только. Сверять знаковый бит текущего числа и записанный (предыдущего). Если поменялось - танцуем
хароршо, для целых знаковый бит выковырять легко вобщем то пододит. а как быть с флотами? как оттуда быстро извлечь знак?
хранить предыдуще число где-нибудь. пусть var - предыдущее число - память или регистр eax - данное or eax,eax je exit xor eax,var jns @1 ;знак не сменился ... ;знак сменился @1: mov var,eax exit: