Hôm nay tôi vừa khám phá thú vị trong khi kiểm tra những gì xảy ra khi tính toán bitwisely trong php như INF^0
(^
=> Bitwise Operator for Exclusive OR (XOR)) giá trị âm trong hệ thống 64 bit.Giá trị vô hạn của PHP trong Bitwise Operations trả về các giá trị lạ
Nhưng sau đó tôi đã hỏi bản thân mình: "Tại sao kết quả sẽ tiêu cực trong XOR khi 'infinit tích cực' có nghĩa là 9223372036854775807
(63 Bits trên 1
với một 0
hàng đầu) và 0 (64 Bits trên 0
=>0 xor 0 = 0
) gì Mặc dù giá trị vô hạn của PHP là gì và giá trị âm là gì (đúng?) khi tôi sử dụng "cực âm" (A hàng đầu 1
đối với một số 0
hàng đầu trên 0 =>1 xor 0 = 1
? ".
Một điểm thú vị khác là điều này chỉ xảy ra trên phiên bản PHP 5.5.9-1, và không ví dụ như trên 5.3.x. và 5.6.x (nơi tôi đã thử nghiệm nó)! Có thể ai đó có ý tưởng điều gì xảy ra ở đó? Thử nghiệm nó trên ba phiên bản nhưng chỉ mỏ (5.5.9-1) mang đến những kết quả:
Chỉ cần để cho các bạn biết, nó chỉ là một playaround trừu tượng tôi đã làm cho vui nhưng tôi thấy nó là hấp dẫn. Có lẽ ai đó có thể giúp đỡ ở đây hoặc giải thích cho tôi một ý nghĩ sai lầm tôi có? Chỉ cần cho tôi biết nếu ai đó cần thêm thông tin về bất cứ điều gì!
EDIT: Theo đó để jbafford nó sẽ là tuyệt vời để có được một answere hoàn chỉnh, vì vậy tôi sẽ chỉ trích ông: why does 5.5 and 5.6 result in PHP_INT_MIN, and everything else return 0?
'-9223372036854775808' là giá trị âm lớn nhất có thể __cho một số nguyên (64 bit) __....' INF' không phải là số nguyên, nhưng [float float 8.7] (https://en.wikipedia.org/ wiki/IEEE_754-1985) –
Bạn có nghĩ rằng vấn đề có lẽ là so sánh bit từ 'float (INF)' với 'int (0)'? Bạn có biết cách này hoạt động không? –
Bạn đang sử dụng các hoạt động bitwise trên giá trị float 64 bit, nhưng sử dụng các hoạt động bitwise xử lý giá trị như thể nó là một giá trị nguyên 64 bit 'Các toán tử bitwise cho phép đánh giá và thao tác các bit cụ thể trong một __integer __.' ... .. do đó nó là một so sánh fallacious. Ops bitwise không kiểm tra xem bạn có đang thực thi chúng với float hay không, bởi vì chúng quan tâm ở mức bit, nhưng chúng sẽ thiết lập kiểu dữ liệu kết quả thành một số nguyên –