n15.bin02logic.py

Задание 15: Битовые операции Для какого наименьшего неотрицательного целого числа А логическое выражение ((x & 52 ≠ 0) ∧ (x & 48 = 0)) → ¬(x & A = 0) истинно (т. е. принимает значение 1) при любом неотрицательном целом значении переменной х? Примечание: m&n означает поразрядную конъюнкцию неотрицательных целых чисел m и n. Пример: 14&5 = 1110₂&0101₂ = 0100₂ = 4
"""
Задание 15: Битовые операции
Для какого наименьшего неотрицательного целого числа А логическое выражение

((x & 52 ≠ 0) ∧ (x & 48 = 0)) → ¬(x & A = 0)

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

Примечание: m&n означает поразрядную конъюнкцию неотрицательных целых чисел m и n.
Пример: 14&5 = 1110₂&0101₂ = 0100₂ = 4
"""

for A in range(0, 1000):
    for x in range(0, 1000):
        # ((x & 52 != 0) and (x & 48 == 0)) → not(x & A == 0)
        # Импликация через <=: (A and B) <= C эквивалентно not(A and B) or C
        if (((x & 52 != 0) and (x & 48 == 0)) <= (x & A != 0)) == 0:
            break
    else:
        print(A)
        break
        
        """
        Ответ: 4
        """
"""
Задание 15: Битовые операции
Для какого наименьшего неотрицательного целого числа А логическое выражение

((x & 52 ≠ 0) ∧ (x & 48 = 0)) → ¬(x & A = 0)

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

Примечание: m&n означает поразрядную конъюнкцию неотрицательных целых чисел m и n.
Пример: 14&5 = 1110₂&0101₂ = 0100₂ = 4
"""

for A in range(0, 1000):
    for x in range(0, 1000):
        # ((x & 52 != 0) and (x & 48 == 0)) → not(x & A == 0)
        # Импликация через <=: (A and B) <= C эквивалентно not(A and B) or C
        if (((x & 52 != 0) and (x & 48 == 0)) <= (x & A != 0)) == 0:
            break
    else:
        print(A)
        break
        
        """
        Ответ: 4
        """

Репозиторий на GitHub