2011-02-10 6 views
12

मेरे पास 16 बिट फिक्स्ड पॉइंट प्रोसेसर है और मैं इसके साथ निश्चित बिंदु प्रसंस्करण करना चाहता हूं। मैं हस्ताक्षर किए गए 16 बिट इन्ट्स के लिए उपयोग करने के लिए सही डेटाटाइप की तलाश में हूं ..फिक्स्ड पॉइंट प्रोसेसिंग: uint16_t और uint_fast16_t के बीच क्या अंतर है?

मेरा प्रश्न है: uint16_t और uint_fast16_t के बीच क्या अंतर है? (ये stdint.h में शामिल हैं।) uint_fast16_t बेहतर है क्योंकि यह तेज़ है ??

धन्यवाद !!

+1

http://en.wikipedia.org/wiki/Stdint.h#Integer_types – kennytm

उत्तर

12

uint16_t एक हस्ताक्षरित 16-बिट पूर्णांक है। uint_fast16_t कम से कम 16 बिट्स के साथ सबसे तेज़ उपलब्ध हस्ताक्षरित पूर्णांक है।

+6

यदि आप "सबसे तेज़" परिभाषित कर सकते हैं तो उत्तर अधिक उपयोगी होगा। –

+3

कभी भी ध्यान न दें: "मानक इन प्रकारों के बारे में कुछ भी जरूरी नहीं है, सिवाय इसके कि उनकी चौड़ाई एन से अधिक या बराबर होनी चाहिए। यह इसे" तेज "पूर्णांक प्रकार के रूप में क्या मतलब है यह तय करने के लिए इसे कार्यान्वयनकर्ता को छोड़ देता है।" –

+0

दिलचस्प ... यह मुझे अजीब लगता है कि इस डेटाटाइप में आकार निर्दिष्ट नहीं है .. यह उपयोगकर्ता पर निर्भर है .. o_o तो इस डेटाटाइप के आकार() को एक त्रुटि में परिणाम देगा? किसी भी मामले में, मुझे नहीं लगता कि uint_fast16_t मेरे लिए लागू होगा। मैं बस निश्चित बिंदु अंकगणित के लिए अपने डेटाटाइप के रूप में uint16_t पर चिपके रहूंगा। :) धन्यवाद ... –

6

uint16_tuint_fast16_t और uint_least16_t से अधिक प्रतिबंधित है। इतना ही नहीं कि बाद में दो 16 बिट्स से अधिक हो सकते हैं, उनके पास पैडिंग बिट्स भी हो सकते हैं (बिट्स जो समानता बिट्स जैसे मान के लिए खाते नहीं हैं)।

यह अंतर हस्ताक्षरित प्रकारों के लिए और भी अधिक स्पष्ट है। यहां सटीक चौड़ाई प्रकार नकारात्मक मानों का प्रतिनिधित्व करने के लिए दो पूरक का उपयोग करना चाहिए।

संबंधित मुद्दे