Почему код выводит конкретно 4 и 3, а не 1 и 1?
Какое пояснение битовым операциям?
Пояснение простое - потому что это не битовые операции
Битовые операции это к примеру вот:
print(bin(0b0110 | 0b0001))
# 0b111
print(bin(0b0111 ^ 0b0001))
# 0b110
print(bin(0b0101 & 0b0001))
# 0b1