Сложение по модулю

Тема в разделе "ASM, С/С++, Delphi, Java", создана пользователем Darkness, 23 июн 2014.

  1. Darkness

    Darkness Постоялец

    Регистр.:
    21 янв 2013
    Сообщения:
    146
    Симпатии:
    69
    Как провести сложение по модулю 6 или 8, без использования булевых типов?
     
  2. Шумадан

    Шумадан Хабарра!!11

    Регистр.:
    6 фев 2008
    Сообщения:
    1.728
    Симпатии:
    2.106
    можно больше информации? какой язык, пример кода, что не получается и так далее.
    в общем, вот алгоритм
    Перейти по ссылке
     
  3. Darkness

    Darkness Постоялец

    Регистр.:
    21 янв 2013
    Сообщения:
    146
    Симпатии:
    69
    Дело в том, что зачастую ксор реализован как булевая операция над битами, по сути это правильно, так как на бинарных процессорах этот подход выполняется гораздо быстрее других (процессор то по сути булевой).
    PHP:
    xor == (&& !m) || (!&& m)
    Но мне нужна сама общая формула, по которой можно считать xor не только для двоичной системы, но и для систем с другими основаниями.
     
  4. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Xor это операция в булевой алгебре, ты не можешь выполнить xor над чем либо кроме 0 и 1.

    Сложение по модулю n делается так - (a+b) mod n, где a,b - числа, а mod - операция нахождения остатка от деления.
    Например сложение 4 и 9 по модулю 4 (в десятичной системе счисления)
    (4+9) mod 4 = 13 mod 4 = 1
     
    Последнее редактирование: 26 июн 2014
    Darkness нравится это.
  5. nullick

    nullick Писатель

    Регистр.:
    6 ноя 2014
    Сообщения:
    3
    Симпатии:
    0
    Странно, всегда думал, что без булевых типов здесь не обойтись... Недавно тоже составлял серьезную формулу, и задачу удалось решить именно введением булевых типов. Не хотелось бы прослыть некромантом, но интересно, по какой причине возникает именно такое ограничение...