Тема 15. Алгебра логики – преобразование логических выражений
15.04 Побитовая конъюнкция
Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела алгебра логики – преобразование логических выражений
Решаем задачи

Ошибка.
Попробуйте повторить позже

Задача 1#87942

Введём выражение m&k  , обозначающее поразрядную конъюнкцию m  и k  (логическое «И» между соответствующими битами двоичной записи).

Определите наименьшее натуральное число A  , такое что выражение

(((x&10 = 0)∧ (x&5 ⁄= 0)) → (x&3 ⁄= 0))∨(x&A  ⁄= 0)

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x  )?

Показать ответ и решение
for a in range(1, 1000):
    c = 0
    for x in range(1, 10000):
       if (((x & 10 == 0 and x & 5 != 0) <= (x & 3 != 0)) or (x & a != 0)) == False:
            c = 1
            break
    if c == 0:
        print(a)
        break

Ответ: 4

Ошибка.
Попробуйте повторить позже

Задача 2#87941

Введём выражение m&k  , обозначающее поразрядную конъюнкцию m  и k  (логическое «И» между соответствующими битами двоичной записи).

Определите наименьшее натуральное число A, такое что выражение

(x&15 ⁄= 0) → ((x&34 = 0) → (x&A ⁄= 0))

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x)?

Показать ответ и решение
for a in range(1, 1000):
    c = 0
    for x in range(1, 1000):
       if ((x & 15 != 0) <= ((x & 34 == 0) <= (x & a != 0))) == False:
            c = 1
            break
    if c == 0:
        print(a)
        break

Ответ: 13

Ошибка.
Попробуйте повторить позже

Задача 3#63015

Определите наименьшее натуральное число A, такое что выражение

((x&28 ⁄=  0) ∨ (x&45 ⁄=  0)) → ((x&17 = 0) → (x&A ⁄=  0))

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x)?

Показать ответ и решение
for a in range(1, 300):
    # Переменная-флаг,
    # которой присваивается 1, если хотя бы одно выражение выдаёт ложь
    f = 0
    for x in range(1, 500):
             # Если выражение ложно(нам нужны только истинные),
             # то приостанавливаем цикл
       if (((x & 28 != 0) or (x & 45 != 0)) <= ((x & 17 == 0) <= (x & a != 0))) == False:
            f = 1
            break
    if f == 0:
        print(a)
        break

Ответ: 44

Ошибка.
Попробуйте повторить позже

Задача 4#63013

Введём выражение M & K, обозначающее поразрядную конъюнкцию M и K (логическое «И» между соответствующими битами двоичной записи). Определите наибольшее натуральное число A, такое что выражение

(((X &13 ⁄= 0)∨ (X &A  ⁄= 0)) → (X&13 ⁄= 0))∨ ((X &A  ⁄= 0) ∧(X &39 = 0))

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной X)?

Показать ответ и решение
for a in range(1, 100):
    f = 0
    for x in range(1, 101):
        if ((((x & 13 != 0) or (x & a != 0)) <= (x & 13 != 0)) or ((x&a != 0) and (x & 39 == 0))) == False:
            f = 1
            break
    if f == 0:
        print(a)
#смотрим на последнее выведенное число, так как нам нужно наибольшее


Ответ: 13

Ошибка.
Попробуйте повторить позже

Задача 5#63012

Введём выражение m&k  , обозначающее поразрядную конъюнкцию m  и k  (логическое «И» между соответствующими битами двоичной записи). Определите наибольшее натуральное число A  , такое что выражение

(x&A ⁄= 0) → ((x&14 = 0) → (x&75 ⁄= 0))

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x  )?

Показать ответ и решение
for a in range(1, 1000):
    f = 0
    for x in range(1, 1001):
        if ((x & a != 0) <= ((x & 14 == 0) <= (x & 75 != 0))) == False:
            f = 1
            break
    if f == 0:
        print(a)
#смотрим на последнее выведенное число, так как нам нужно наибольшее


Ответ: 79

Ошибка.
Попробуйте повторить позже

Задача 6#60729

Определите наименьшее натуральное число A, при котором выражение

(x&A  = 0)∧ (x&58 ⁄= 0)∧ (x&22 = 0)

тождественно ложно (то есть принимает значение 0 при любом натуральном значении переменной x)?

Показать ответ и решение
for A in range(1, 101):
    k = 0
    for x in range(1, 1000):
        if ((x & A == 0) and (x & 58 != 0) and (x & 22 == 0)) == 0:
            k += 1
    if k == 999:
        print(A)
        break

Ответ: 40

Ошибка.
Попробуйте повторить позже

Задача 7#60320

Определите наименьшее натуральное число A, такое что выражение

(x&45 ⁄= 0) −→ ((x&9 = 0) −→ (x&A ⁄= 0))

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x)?

Показать ответ и решение
for a in range(1, 300):
    # Переменная-флаг,
    # которой присваивается 1, если хотя бы одно выражение выдаёт ложь
    f = 0
    for x in range(1, 500):
        # Если выражение ложно(нам нужны только истинные),
        # то приостанавливаем цикл
        if ((x & 45 != 0) <= ((x & 9 == 0) <= (x & a != 0))) == False:
            f = 1
            break
    # Так как ищем минимальное значение,
    # то сразу же после его нахождения прерываем цикл
    if f == 0:
        print(a)
        break

Ответ: 36

Ошибка.
Попробуйте повторить позже

Задача 8#60319

Введём выражение B&C  , обозначающее поразрядную конъюнкцию B и C (логическое «И» между соответствующими битами двоичной записи). Определите наименьшее натуральное число A, такое что выражение

((x&937 ⁄= 0)∨ (x&78 ⁄= 0)) −→ (x&A ⁄= 0)

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной x)?

Показать ответ и решение
for a in range(1, 1500):
    # Переменная-флаг,
    # которой присваивается 1, если хотя бы одно выражение выдаёт ложь
    f = 0
    for x in range(1, 5000):
        # Если выражение ложно(нам нужны только истинные),
        # то приостанавливаем цикл
        if (((x & 937 != 0) or (x & 78 != 0)) <= (x & a != 0)) == False:
            f = 1
            break
    # Так как ищем минимальное значение,
    # то сразу же после его нахождения прерываем цикл
    if f == 0:
        print(a)
        break

Ответ: 1007

Ошибка.
Попробуйте повторить позже

Задача 9#58092

Введём выражение m&k  , обозначающее поразрядную конъюнкцию m  и k  (логическое «И» между соответствующими битами двоичной записи). Для какого наименьшего натурального числа A  формула

((x&45 ⁄= 0)∨ (x&28 ⁄= 0)∨(x&56 ⁄= 0)) → (x&A  ⁄= 0)

тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение
for a in range(1,1000):
    f = 0
    for x in range(10000):
        if (((x & 45 != 0) or (x & 28 != 0) or (x & 56 != 0)) <= (x & a != 0)) == False:
            f = 1
            break
    if f == 0:
        print(a)
        break

Ответ: 61

Ошибка.
Попробуйте повторить позже

Задача 10#54821

Для какого наименьшего натурального числа А формула

((x&15 ⁄= 0)∧ (x&64 ⁄= 0)) → ((x&A  ⁄= 0)∧ (x&15 ⁄= 0))

тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом значении переменной x)?

Показать ответ и решение
for a in range(1, 100):
     # Переменная-флаг, по которой будем отслеживать наличие ложных выражений
     f = 0
     for x in range(1500):
         # Если нашлось такое выражение, то прекращаем перебор
         if (((x&15 != 0) and (x&64 != 0)) <= ((x&a != 0) and (x&15 != 0))) == False:
             f = 1
             break
     # Если ложных выражений не было, то выводим значение и прекращаем цикл,
     # так как нам нужно только минимальное значение
     if f == 0:
         print(a)
         break

Ответ: 15

Ошибка.
Попробуйте повторить позже

Задача 11#54820

Введём выражение m&k  , обозначающее поразрядную конъюнкцию m  и k  (логическое «И» между соответствующими битами двоичной записи). Для какого наибольшего натурального числа A  формула

(x&A ⁄= 0) → ((x&17 = 0) → (x&33 ⁄= 0))

тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение
for a in range(1, 100):
    # Переменная-флаг, по которой будем отслеживать наличие ложных выражений
    f = 0
    for x in range(1500):
        # Если нашлось такое выражение, то прекращаем перебор
        if ((x&a != 0) <= ((x&17 == 0) <= (x&33 != 0))) == False:
            f = 1
            break
    # Если ложных выражений не было, то выводим значение
    if f == 0:
        print(a)

Ответ: 49

Ошибка.
Попробуйте повторить позже

Задача 12#54819

Введём выражение m&k  , обозначающее поразрядную конъюнкцию m  и k  (логическое «И» между соответствующими битами двоичной записи). Для какого наименьшего натурального числа A  формула

((x&38 ⁄= 0)∨ (x &45 ⁄= 0)) → ((x&34 = 0) → (x&A ⁄= 0))

тождественно истинна (то есть принимает значение 1 при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение
for a in range(1, 100):
    # Переменная-флаг, по которой будем отслеживать наличие ложных выражений
    f = 0
    for x in range(1500):
        # Если нашлось такое выражение, то прекращаем перебор
        if (((x&38 != 0) or (x&45 != 0)) <= ((x&34 == 0) <= (x&a != 0))) == False:
            f = 1
            break
    # Если ложных выражений не было, то выводим значение и прекращаем цикл,
    # так как нам нужно только минимальное значение
    if f == 0:
        print(a)
        break

Ответ: 13

Ошибка.
Попробуйте повторить позже

Задача 13#51794

Определите наименьшее натуральное число A, такое что выражение

((X &13 ⁄= 0)∨(X &13 = 0)) → ((X&A ⁄= 0)∨ (X &39 = 0))

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной X)?

Показать ответ и решение

Решение руками:

Упростим выражение, раскрыв импликацию:

((X &13 = 0)∧ (X&13 ⁄= 0))∨ ((X &A  ⁄= 0) ∨(X &39 = 0))

Преобразуем выражение по законам алгебры логики:

(X &39 = 0)∨ (X&A  ⁄= 0)

Таким образом из выражения видно, что левое выражение должно выполняться, когда правое не выполняется, следовательно A = 39  .

Решение программой:

for a in range(1, 1000):
    flag = True
    for x in range(1, 1000):
        if (((x & 13 != 0) or (x & 13 == 0)) <= ((x & a != 0) or (x & 39 == 0))) == False:
            flag = False
            break
    if flag:
        print(a)
        break

Ответ: 39

Ошибка.
Попробуйте повторить позже

Задача 14#51793

Определите наибольшее натуральное число A, такое что выражение

(X &10 ⁄= 0)∨ (X &39 = 0)∨ (X&A  = 0)

тождественно истинно (то есть принимает значение 1 при любом натуральном значении переменной X)?

Показать ответ и решение

Решение руками:

Преобразуем выражение по законам алгебры логики:

X-+ Y + Z = X → (Y + Z) = (X  → Y )+ (X  → Z )

((X&10 = 0) → (X&39 = 0))∨ ((X &10 = 0) → (X &A  = 0))

Заметим, что первое слагаемое логической суммы является импликацией Z10 →  Z39  , которая не является истинной для всех x  . Тогда необходимо и достаточно, чтобы второе слагаемое логической суммы было тождественно истинным.

Итак, импликация Z10 → ZA  должна быть тождественно истиной. Запишем число 10 в двоичной системе счисления: 10  = 1010
  10      2

Единичные биты, стоящие в правой части, должны являться единичными битами левой. Поэтому в правой части единичными битами независимо друг от друга могут быть (а могут и не быть) только первый и третий биты (считая справа налево, начиная с нуля). Поскольку искомое А – наибольшее натуральное число, все биты, которые могут быть единичными будут единичными.

Тем самым, наибольшее A = 10102 = 1010  .

Решение программой:

for a in range(1, 1000):
    flag = True
    for x in range(1, 1000):
        if ((x & 10 != 0) or (x & 39 == 0) or (x & a == 0)) == False:
            flag = False
            break
    if flag:
        print(a)

Ответ: 10

Ошибка.
Попробуйте повторить позже

Задача 15#6820

Обозначим через m &n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5  = 11102 &01012 =  01002 = 4  .

Для какого наибольшего целого числа   формула

x &A  ⁄= 0 →  (x&10 =  0 →  x&5 ⁄=  0)

тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение

Преобразуем выражение к виду Z10Z5 →  ZA  с помощью законов де Моргана:

(x &A  = 0) ∨ (x&10 ⁄=  0) ∨ (x &5 ⁄= 0 )
(x&10  = 0 ∧ x&5  = 0) → (x &A  = 0)

Для того, чтобы выражение вида Z  Z  →  Z
 10  5     A  являлось истинным, единичные биты, стоящие в правой части, должны являться единичными битами левой.

Запишем числа 10 и 5 в двоичной системе счисления:

1010 = 10102

510 = 01012

Значит, A  обязательно должно содержать в себе единицу во всех разрядах. Так как ищем наибольшее A  , наш ответ 11112 = 1510   .

Ответ: 15

Ошибка.
Попробуйте повторить позже

Задача 16#6819

Обозначим через m &n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  .

Так, например, 14&5  = 11102 &01012 =  01002 = 4  .

Для какого наибольшего целого числа   формула

x &A  ⁄= 0 →  (x&14 =  0 →  x&3 ⁄=  0)

тождественно истинна (т. е. принимает значение 1 при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение
def f(a):
    # если отрцание формулы возвращает истину,
    # то сама формула возвращает ложь
    for x in range(1000):
        if not((x & a != 0) <= ((x & 14 == 0) <= (x & 3 != 0))):
            return False
    return True

for a in range(1000):
    if f(a):
        print(a)

Ответ: 15

Ошибка.
Попробуйте повторить позже

Задача 17#6815

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.  Так, например, 14 &5 =  11102&01012  = 01002  = 4.

Для какого наименьшего неотрицательного целого числа A  формула ((x&17  ⁄= 0) ∧ (x&57  ⁄= 0)) → ((x&A  ⁄=  0) ∧ (x&17 ⁄= 0 ))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение

Введем обозначение: x&a  = 0 ⇔  Za.  Тогда выражение имеет вид  ----  ----     ---  ----
(Z17 ∧ Z57) →  (ZA ∧ Z17).

Так как a → b = a-∨ b,                ---  ----
(Z17 ∨ Z57) ∨ (ZA ∧ Z17 ).

Помним, что (a ∨ b) ∧ (a ∨ c) = a ∨ b ∧ c.  Тогда наше выражение имеет вид (Z17 ∨ Z17) ∧ (Z17 ∨ ZA-) ∨ Z57.  Т.к.     --
a ∨ a = 1,  это то же самое, что      ---
Z17 ∨ ZA ∨ Z57.

Воспользуемся тем, что          --
a →  b = a ∨ b.  Наше выражение тогда имеет вид ZA →  (Z17 ∨ Z57).

Знаем, что a →  (b ∨ c) = a →  b ∨ a → c.  Тогда получаем ZA  →  Z17 ∨ ZA →  Z57.

Мы хотим, чтобы данное выражение всегда было равно 1. Для этого нужно, чтобы или Z   →  Z   = 1,
  A     17  или Z   →  Z   = 1.
  A     57

Помним, что импликация истинна, если на тех местах, где в двоичной записи числа справа стоят единицы, стоят единицы и в двоичной записи числа слева, то есть наименьшее неотрицательное целое A  — это и есть число справа, то есть 17 в первом случае и 57 во втором. Мы ищем наименьшее число — то есть нам подходит 17.

Ответ: 17

Ошибка.
Попробуйте повторить позже

Задача 18#6814

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.  Так, например, 14 &5 =  11102&01012  = 01002  = 4.

Для какого наименьшего неотрицательного целого числа A  формула ((x&47  ⁄= 0) ∨ (x&24  ⁄= 0)) → ((x&29  = 0) →  (x&A  ⁄= 0 ))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение

Введем обозначение: x&a  = 0 ⇔  Za.  Тогда выражение имеет вид  ----  ----           ---
(Z47 ∨ Z24) →  (Z29 → ZA ).

Используя, что a →  b = a ∨ b,  получим:             ----  ---
Z47 ∧ Z24 ∨ Z29 ∨ ZA.

Теперь снова воспользуемся этим правилом, только в обратную сторону. Получим ZA  ∧ Z29 → Z47 ∧ Z24.

Так как Za ∧ Zb = Zaorb,  наше выражение имеет вид ZAor29 → Z47or24.

Правую часть можем сразу вычислить, поразрядно сложив в двоичной системе счисления. Это

 101111;

-011000;--
  111111

Теперь рассмотрим левую часть. Знаем, что, чтобы импликация была истинной, нам нужно, чтобы на всех местах, где в двоичной записи правого выражения стоит 1,  единица стояла и в записи выражения слева. 29 = 11101  .
           2  Для удобства запишем в столбик A  (пока не знаем, чему равно) и 29,  а под чертой — Z47or24.

\(\)

r ∗ ∗ ∗ ∗∗
11101
111111

\(\)

Итак, на тех местах, где в числе под чертой стоят единицы, единицы должны стоять и в поразрядном сложении A  и 29  — верхних двух чисел.

Таким образом, на месте второго с конца бита числа A  должна стоять 1  — а на остальных местах неважно, что: благодаря 29 на этих местах и так будут стоять 1.

Так как мы ищем наименьшее неотрицательное целое A,  на тех местах, на каких можем, мы хотим ставить 0.  Значит, A  имеет вид 102 = 210.

Ответ: 2

Ошибка.
Попробуйте повторить позже

Задача 19#6813

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n.  Так, например, 14 &5 =  11102&01012  = 01002  = 4.

Для какого наименьшего неотрицательного целого числа A  формула (x&25  ⁄= 0 ) → ((x&17  = 0) →  (x &A  ⁄= 0))  тождественно истинна (т.е. принимает значение 1  при любом неотрицательном целом значении переменной x  )?

Показать ответ и решение

Обозначим x &25 =  0 ⇔ Z25,x &17 =  0 ⇔ Z17, x&A  = 0 ⇔  ZA.  Перепишем: ----          ---
Z25 →  (Z17 →  ZA ) = 1  для любых x.

Воспользуемся тем, что a → b = a-∨ b,a-= a.  Тогда Z25 ∨ Z17-∨ ZA-=  1.  Теперь воспользуемся тем же в обратную сторону: соберем импликацию. Получим (Z17 ∧ ZA ) → Z25 = 1.

Помним, что Z17 ∧ ZA = Z17orA.  Тогда Z17orA → Z25 =  1.

Переведем в двоичную систему счисления известные числа: 17 = 10001, 25 = 11001.

\(\)

r _& 10001;
∗ ∗ ∗ ∗∗ ;
11001

\(\)

Известно, что, чтобы данная импликация была равна 1, на тех местах, где в двоичной записи 25 стоят единички, в двоичной записи Z17orA  должны тоже стоять единички.

Мы ищем наименьшее неотрицательное целое число A.  Значит, где вместо звездочек можно ставить нули, — будем ставить. Двигаемся справа налево. На место первой звездочки можно поставить 0 — единичка уже есть в записи числа 17. На втором месте все равно, что ставить, — в записи 25 на этом месте 0. Ставим 0. Аналогично ставим на третье место. Теперь посмотрим на четвертое: в записи 25 — стоит 1, а вот в записи 17 — 0. Значит, на четвертом месте в числе A  должна быть единичка. Аналогично заканчиваем ставить знаки. Никаких лишних разрядов впереди числа добавлять не будем — мы ищем наименьшее.

Итак, получили 1000. Это число в двоичной системе счисления. В десятичной — 8.

Ответ: 8

Ошибка.
Попробуйте повторить позже

Задача 20#6377

Обозначим через m&n  поразрядную конъюнкцию неотрицательных целых чисел m  и n  . Так, например, 14&5 = 11102&01012 = 01002 = 4  . Для какого наибольшего неотрицательного целого числа A  формула

x&A  ⁄= 0 → ((x&17 = 0 ∧x&5 = 0) → x&3 ⁄= 0)

тождественно истинно (т.е. принимает значение 1 при любом неотрицательном целом значении переменной x)?

Показать ответ и решение
for a in range(0, 1000):
    flag = True
    for x in range(0, 1000):
        if ((x & a != 0) <= (((x & 17 == 0) and (x & 5 == 0)) <= (x & 3 != 0))) == False:
            flag = False
            break
    if flag:
        print(a)

Ответ: 23
Рулетка
Вы можете получить скидку в рулетке!