Giả sử chúng ta có hai số x và y. Chúng ta phải kiểm tra xem một trong hai số này có phải là phần bù của 1 của số kia hay không. Tất cả chúng ta đều biết phần bù 1 của một số nhị phân đang lật tất cả các bit từ 0 thành 1 hoặc 1 thành 0.
Vì vậy, nếu đầu vào là x =9, y =6, thì đầu ra sẽ là True vì các biểu diễn nhị phân là x =1001 và y =0110 là phần bù của nhau.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- z =x XOR y
- trả về true khi tất cả các bit trong z được đặt, ngược lại là false
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def all_one(n): if n == 0: return False; if ((n + 1) & n) == 0: return True return False def solve(x, y): return all_one(x ^ y) x = 9 y = 6 print(solve(x, y))
Đầu vào
9, 6
Đầu ra
True