मैं एक प्रोग्राम लिख रहा हूं जो आईसीसी रंग प्रारूप बनाता है। ये प्रारूप s15Fixed16Number नामक डेटा प्रकार निर्दिष्ट करते हैं जिसमें एक साइन बिट, 15 पूर्णांक बिट्स और 16 आंशिक बिट्स होते हैं। आईईईई 754 32-बिट फ्लोट्स में साइन बिट, 8 एक्सपोनेंट बिट्स और 23 आंशिक बिट्स हैं।एक फ्लोट को गैर मानक एन्कोडिंग में परिवर्तित करने के लिए कैसे करें
मुझे टेक्स्ट बॉक्स से इनपुट प्राप्त करने की आवश्यकता है, और उन्हें एक s15Fixed16Number में परिवर्तित करने की आवश्यकता है। कुछ खोज Google पुस्तकें पर this चालू हुईं, लेकिन यह एक दशमलव संख्या को s15Fixed16Number में बदलने के बारे में बात कर रही है। मुझे लगता है कि मैं सिर्फ लिंक में बताई गई विधि का उपयोग कर सकता हूं, लेकिन मैंने यह निर्धारित करने के लिए अभी तक कोई परीक्षण नहीं किया है कि यह कितना सटीक होगा। मुझे लगता है कि मैं टेक्स्ट बॉक्स से चरित्र इनपुट को कन्वर्ट करने का भी प्रयास कर सकता हूं, लेकिन मैंने अभी तक इतना कुछ नहीं सोचा है।
मैं कोको का उपयोग कर रहा हूं लेकिन मुझे लगता है कि यह महत्वपूर्ण नहीं है; किसी भी सी समारोह काम करना चाहिए। यहाँ s15Fixed16Number प्रारूप में मौजूद कुछ उदाहरण मान हैं:
-32768.0 = 0x80000000
0 = 0x00000000
1.0 = 0x00010000
32767 + (65535/65536) = 0x7FFFFFFF
मुझे लगता है कि यह कुछ समय है कि संख्यात्मक अभिकलन वर्ग बाद से किया गया है!
यदि उदाहरण रूपांतरण सही हैं, तो s15Fixed16Number में साइन बिट नहीं है: - यह केवल एक मानक twos 'पूरक हस्ताक्षरित एन्कोडिंग है। जैसे -32768.0 = 0x80000000 का तात्पर्य है कि: -1.0 = 0xffff0000 –
यह आईसीसी प्रोफाइल प्रारूप विशिष्टता का समर्थन करता है जो s15Fixed16Number का दावा करता है: "यह प्रकार एक निश्चित हस्ताक्षरित 4 बाइट/32 बिट मात्रा का प्रतिनिधित्व करता है जिसमें 16 fractional बिट्स हैं।" यह नहीं कहता कि इसमें एक संकेत बिट है, लेकिन यह संख्या हस्ताक्षरित है। –
मानक s15Fix16Number, मान -32768.9 999 के रूप में एन्कोड किए गए ऋणात्मक संख्या का केवल एक (बोगस) उदाहरण देता है। यह मान्य सीमा के बाहर काफी स्पष्ट रूप से है। यह स्पष्ट नहीं है कि -1 को कोड किया जाना चाहिए; यह स्पष्ट नहीं है कि न्यूनतम मान्य एन्कोडेड मान क्या है (-32768.00000 या -32767.9 99 99)। परिशिष्ट में हेडर में उपयोग किया जाने वाला प्रकार यह है: 'टाइपपीफ लांग आईसीएस 15 फ़िक्स्ड 16 नम्बर;'। –