· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ZEN —› Проверка условий при помощи арифметических выражений

<< . 1 . 2 .

Посл.отвђт Сообщенiе


Дата: Авг 1, 2004 22:00:16

The Svin
В формуле должно быть ((abs(x):max(1,abs(x)))-1)*(-1)
abs(x)   max(1,abs(x))  abs(x)/max(1,abs(x))
\    /      \    /       
 \  /        \__/             __  __
  \/                            \/


Если в max вместо единицы подставить бесконечно малое положительное число, то тогда действительно получится решение полностью удовлетворяющее условиям задачи, только малопригодное для вычислений.


Дата: Авг 2, 2004 01:57:49 · Поправил: The Svin

Непонятно. Зачем нужно два abs(x)?
Приведи любое вещественное x при котором моя формула не сработает.
Моё решение полностью подходит для вычислений.
Непонимаю просто о чём речь.


Дата: Авг 2, 2004 02:49:51

Понял ошибку. Действительно годится только для целых.
|x| может быть меньше 1.
Завтра подумаю как обойти.


Дата: Авг 2, 2004 03:07:27

The Svin
„Непонятно. Зачем нужно два abs(x)? “
x/max(1,abs(x))
       1___
       /
      0
  ___/
    -1


Дата: Авг 11, 2004 23:53:47

Вобщем нет такого выражения и быть не может.
После того как я свёл задачу как (a+b)=1 где 0 <= b <= a это стало очевидно.


Дата: Авг 12, 2004 00:16:11

„Вобщем нет такого выражения и быть не может.“

После создания этой темы у меня возникли такие подозрения 8)


Дата: Авг 13, 2004 04:10:26

Если была бы операция взятия целой части числа (антье) то можно было бы. Поскольку раскладывается на а+b=1 с a=1 при x=0 и a<1 при x<>0.


Дата: Авг 24, 2004 17:29:49

Извиняюсь, что не совсем в тему.
Но вот вам извращенский способ сделать это для целых чисел.

mov ax, <исходное значение>
xor bx,bx
dec bx
mul ax,bx
add ax,dx
inc ax

Смысл в том, что умножаем на 0FFFFh.
Ноль при умножении даст ноль, а любое другое число даст такой результат, что сумма верхнего слова и нижнего слова опять будет равна 0FFFFh.

Это тот же прикол, что и с цифрой 9.
Умножьте любую цифру (кроме нуля) на девять и сложите старший и младший разряд - получится 9.
Это в десятиричной системе.
А в 65536-ричной системе ту же роль играет число 65535.

<< . 1 . 2 .


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.087