Задачка на сравнение

Тема в разделе "WASM.ZEN", создана пользователем MrKreazy, 5 фев 2007.

  1. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Собственно такая задача:составить математическую формулу, результатом которой будет единица, если число не ноль, и ноль, если число ноль.
    Единственное решение(не мат.формула), которое я придумал: число=-модуль(число);число=число shr длина_типа*8-1.
    Есть ли еще решения, в виде мат.формулы?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Варианты формул можно посмотеть в книге Henry S. Warren, "Hacker's Delight", 2-11 Comparison Predicates. В x86 обычно для этой цели используется инструкция neg:
    Код (Text):
    1. neg eax
    2. sbb eax,eax
    3. neg eax
     
  3. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    А другие способы есть? Не варианты данного?
     
  4. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    MrKreazy
    Формул можно придумать сколько угодно, простейший вариант ((sign(x))^2.
     
  5. MrKreazy

    MrKreazy New Member

    Публикаций:
    0
    Регистрация:
    11 дек 2006
    Сообщения:
    19
    Вся проблема в том, что мат.формула-это формула только с алгебраическими действиями! А сигн основан на сравнении
     
  6. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    MrKreazy

    Алгебраические действия - это непрерывные функции и любая составленная из них функция будет также непрерывной. Ты же хочешь получить "прерывную" (? не знаю правильного термина).