मैं बीईआर-संपीड़ित पूर्णांक के डीकोडिंग को कार्यान्वित कर रहा हूं और हाल ही में मुझे बड़े पूर्णांक वाले बिटवाईड ऑपरेशंस से संबंधित एक अजीब जावास्क्रिप्ट व्यवहार मिला है।बड़े पूर्णांक के साथ बिटवाईर ऑपरेशंस
उदा .:
var a = 17516032; // has 25 bits
alert(a << 7) // outputs -2052915200
alert(a * 128) // outputs 2242052096
alert(2242052096 >> 16) // outputs -31325
alert(2242052096/65536) // outputs 34211
जबकि पहले वैकल्पिक हल (बाएं पारी के बजाय गुणा) स्वीकार्य है, दूसरा नहीं है।
ऐसा क्यों होता है? इसके साथ कैसे सहन करें?
मुझे यह नहीं पता कि विभाजन क्यों स्वीकार्य नहीं होगा? – Guffa
@ गुफा मुझे केवल 32 बिट पूर्णांक के लिए कुछ सामान्य दृष्टिकोण की आवश्यकता नहीं है। –
डिवीजन पूर्णांक पर नहीं किया जाता है, यह फ़्लोटिंग पॉइंट नंबर पर किया जाता है, इसलिए मुझे आपकी तर्क समझ में नहीं आती है। इसके अलावा, एक डबल परिशुद्धता फ़्लोटिंग पॉइंट नंबर केवल 53 बिट पूर्णांक का प्रतिनिधित्व कर सकता है, इसलिए यदि आप बीईआर-संपीड़ित संख्याओं को डीकोड करना चाहते हैं तो यह बहुत कुछ नहीं है। – Guffa