यहां मेरे अपने प्रश्न पर एक शॉट देने वाला है।
हाँ यह 32-बिट/64-बिट अंतर है।
32-बिट सिस्टम में, आवश्यक फ्लोट बिट प्राप्त करने के लिए एक फ्लोट प्रकार को दो मेमोरी रिक्त स्थान लेना पड़ता है। पीएचपी डबल-परिशुद्धता का उपयोग करता है (http://en.wikipedia.org/wiki/Floating_point#IEEE_754:_floating_point_in_modern_computers देखें)
$ हेक्स एक फ्लोट प्रकार का मूल्यांकन करता है। अंतराल और डीकबिन फ़ंक्शंस इसे एक इंट प्रकार (ऊपर पहला उदाहरण)
दूसरे उदाहरण में हम डिकबिन का उपयोग करने से पहले बिटवाई ऑपरेटर का उपयोग नहीं कर रहे हैं। यह दो मेमोरी स्पेस डबल-प्रेसिजन फ्लोट में बिट्स को फ्लिप करता है, और उसके बाद int सेकेंड में परिवर्तित हो जाता है।हमें जो कुछ उम्मीद थी उससे अलग कुछ देना।
वास्तव में, अगर हम intval के अंदर() तो जैसे निगेट डाल:
$hex = 0x80008000;
print_r(decbin(intval(~$hex)) . '<br/>');
print_r(decbin(~$hex));
हम
1111111111111111111111111111111
1111111111111111111111111111111
उत्पादन के रूप में मिलता है।
मैं काफी अच्छा अभी तक गणित के साथ इस साबित करने के लिए नहीं कर रहा हूँ (जो इस लेख http://en.wikipedia.org/wiki/Double_precision की मदद से पता लगा जा सकता है)। लेकिन हो सकता है जब मैं बाद में समय -_-
मुझे लगता है यह जानने के लिए कैसे संख्या कंप्यूटर में प्रतिनिधित्व कर रहे हैं तो हम इस तरह की विसंगतियों को समझते हैं और न उन्हें कीड़े कॉल कर सकते हैं बहुत महत्वपूर्ण है है।
पीएचपी किस संस्करण का उपयोग कर रहे हैं? दूसरा मामला मेरे लिए 5.3.6 –
पर काम करता है मैं 5.3.8 चला रहा हूं और समस्या मौजूद है। – Pateman
मैं उपयोग कर रहा हूँ 5.2.17 – Vigrond