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
"""