Логические операторы (AND)

Тема в разделе "WASM.BEGINNERS", создана пользователем DenKor, 21 окт 2008.

  1. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Есть следующие уравнение

    A & X = C

    A,C - константы (WORD)
    X - неизвестное (область определения X - WORD)

    Чему равно X ?

    У меня дальше A & X = X & A мыслей нет
     
  2. dermatolog

    dermatolog Member

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    406
    Адрес:
    Екатеринбург
    X = C & A
     
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    диапазону чисел
    X = (ANY & !A) | C,
    где ANY любое число со значащими разрядами на месте нулевых разрядов А.
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    Здесь необходимо смотреть конкретные числа, исходя из аксиом A & 1 = A и A & 0 = 0 т.е. если A=1010 и С=0010, то можно сказать, что X=0?1? где ? может быть как 0 так и 1 Более конкретно, смотрим для i-разряда числа X Там где Ai=1 и Ci=1 Xi=1, там где Ai=1 и Ci=0 Xi=0, там где Ai=0 и Ci=0 Xi=неопределен.
     
  5. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Это неправильное утверждение
     
  6. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Спасибо.
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    DenKor Внимательно читайте Правила форума WASM
     
  8. Stiver

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

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    AND - операция побитовая, поэтому можем рассматривать каждый бит отдельно. Т.е. примем A, X, C равными 0 или 1. Тогда
    A & X = C будет эквивалентно уравнению A*X = C. Отсюда три случая:
    1) A==0 и C==0 => X любое
    2) A==0 и C==1 => решения нет
    3) остальное => X=C/A, что равнозначно X = C & A
     
  9. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Stiver
    Если теперь перейти к общему случаю (n битов), получаем.
    Пусть
    A = (a1, a2, ..., an)
    C = (c1, c2, ..., cn)
    Сначала проверяем, что во всех битах не будет ai = 0 и c1 = 1 (т.е. вектор C <= A, что вполне естественно, так как C есть подмножество A).
    Решения будут формироваться след. образом: в тех позициях, где ai = 1, xi = ci; там же, где ai = 0 и c1 = 0 значение xi будет любое. Число решений будет равно 2^(n - вес вектора A).

    Вроде так, если не напутал.

    Пример
    A = (1010)
    C = (1000)
    Решения
    (1*0*) = {(1000), (1001), (1100), (1101)}.
     
  10. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    A = 3 X =5 C=1

    A & X = 1 - это C
    C & A = 1 - это не X

    Это частное решение, нужно полное решение в которое гарантировано входит мой X
     
  11. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    DenKor
    Stiver видимо имел в виду, что при A = 1 => X = C.
     
  12. Stiver

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

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    DenKor
    Читай внимательно, я расписал случаи для одного бита. crypto обобщил на n бит.
     
  13. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    DenKor
    пусть A = 3 X =5 C=1
    исходный пример: 0011 & 0001=0001
    0011 & 0101=0001
    0011 & 1001=0001
    0011 & 1101=0001
    восстанавливаем число Х: 0011 ? 0001=XX01
    not(A xor C)=1101 - нули, там, где у X нулевые разряды
    C=0001 - единицы, там, где у числа X единичные разряды
    1111 - С - (A xor C)=1100 - единицы, там, где у числа X неопределенные разряды
    Для того, что бы гарантированно найти Х -- требовалось A xor X = С, тогда A xor C = X
     
  14. DenKor

    DenKor New Member

    Публикаций:
    0
    Регистрация:
    3 авг 2004
    Сообщения:
    32
    Всем большое спасибо.
    Алгоритм я составил.
     
  15. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Stiver
    А вот интересно, как решить уравнение A ^ X = B (^ - пересечение множеств) для двух произвольных множеств A и B?
     
  16. Stiver

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

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    crypto
    Хм, вроде бы примерно так же:

    1) если B не \subset A => нет решения
    2) иначе: X \subset (B AND NOT(A))

    Upd.: напутал конечно, должно быть X = B AND subset(NOT(A)))
     
  17. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Stiver
    Кажись вместо AND должно быть OR (объединение), а то ведь поскольку B - подмножество A, то пересечение B и дополнения A будет пустым.
    Т.е. решением будет объединение B с любым подмножеством из дополнения A?
     
  18. Stiver

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

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    crypto
    Совершенно верно, я имел в виду объединение множеств, только неудачно записал. Надо было + поставить, не догадался. Или целиком в LaTeX'e набирать.