Tôi đã gặp một trường hợp (dường như) rất kỳ lạ.
Lấy số 2 ( 0b10
) và bitmask nó với 1 ( 0b01
)
Điều này sẽ tạo ra 0b00
tương đương với 0.
Tuy nhiên, đây là nơi ông Schrödinger đến:
var_dump(0b10 & 0b01); // int(0)
var_dump(0b10 & 0b01 == 0); // int(0)
var_dump(0b10 & 0b01 != 0); // int(0)
Whisky. Tango. Foxtrot.
Phải thừa nhận rằng tôi không phải là người nhạy bén nhất khi nói đến các toán tử bitwise - vì vậy có lẽ tôi đã mắc sai lầm kinh khủng, khủng khiếp ở đâu đó?
Tuy nhiên, trong Python:
0b10 & 0b01 == 0
= True
0b10 & 0b01 != 0
= False
...vì thế?
Mặc dù vậy, có điều gì đó kỳ lạ hơn: được
—
Lily Chung
0b0+1
đánh giá là 2
trong một số phiên bản, do lỗi phân tích cú pháp.
var_dump(!(0b10 & 0b01))