दो से विभाजन
गणित में दो से भाग करने या आधा करने को मध्यस्थता या अल्पीकरण भी कहा गया है।[1] अन्य संख्याओं द्वारा गुणन और विभाजन से भिन्न ऑपरेशन के रूप में इसका उपचार प्राचीन मिस्रवासियों के समय से चला आ रहा है, जिनके प्राचीन मिस्र गुणन में दो से विभाजन को इसके मूलभूत चरणों में से एक के रूप में उपयोग किया जाता था।[2] सोलहवीं शताब्दी के अंत तक कुछ गणितज्ञों ने हाफिंग को एक अलग ऑपरेशन के रूप में देखना जारी रखा,[3][4] और आधुनिक कंप्यूटर प्रोग्रामिंग में इसे अक्सर अलग से व्यवहार किया जाता है।[5] इस ऑपरेशन को करना दशमलव अंकगणित में, कंप्यूटर प्रोग्रामिंग में उपयोग की जाने वाली बाइनरी अंक प्रणाली में और अन्य सम-संख्या वाली अंक प्रणालियों में सरल है।
बाइनरी
बाइनरी अंकगणित में, दो से विभाजन एक बिट शिफ्ट ऑपरेशन द्वारा किया जा सकता है जो नंबर एक स्थान को दाईं ओर स्थानांतरित कर देता है। यह शक्ति कटौती अनुकूलन का एक रूप है। उदाहरण के लिए, बाइनरी में 1101001 (दशमलव संख्या 105), एक स्थान दाईं ओर स्थानांतरित होने पर, 110100 (दशमलव संख्या 52) है: निम्नतम क्रम बिट, 1, हटा दिया जाता है। इसी प्रकार, दो की किसी भी घात से विभाजन 2k को दाएं-शिफ्टिंग k स्थितियों द्वारा निष्पादित किया जा सकता है। क्योंकि बिट शिफ्ट अक्सर डिविजन की तुलना में बहुत तेज ऑपरेशन होते हैं, इस तरह से डिविजन को शिफ्ट से बदलना कार्यक्रम अनुकूलन में एक सहायक कदम हो सकता है।[5]हालाँकि, सॉफ्टवेयर पोर्टेबिलिटी और पठनीयता के लिए, इस प्रतिस्थापन को करने के लिए डिवीज़न ऑपरेशन और संकलक पर भरोसा करके प्रोग्राम लिखना अक्सर सबसे अच्छा होता है।[6] सामान्य लिस्प से एक उदाहरण:
(setq number #b1101001) ; #b1101001 — 105
(ash number -1) ; #b0110100 — 105 >> 1 ⇒ 52
(ash number -4) ; #b0000110 — 105 >> 4 ≡ 105 / 2⁴ ⇒ 6
हालाँकि, उपरोक्त कथन, विभाजित हस्ताक्षरित संख्या अभ्यावेदन बाइनरी संख्याओं से निपटने के दौरान हमेशा सत्य नहीं होते हैं। 1 बिट से दाईं ओर खिसकने पर यह दो से विभाजित हो जाएगा, हमेशा नीचे की ओर पूर्णांकित होता हुआ। हालाँकि, कुछ भाषाओं में, हस्ताक्षरित बाइनरी संख्याओं का विभाजन 0 की ओर होता है (यदि परिणाम नकारात्मक है, तो इसका मतलब है कि यह पूर्णांकित है)। उदाहरण के लिए, जावा (प्रोग्रामिंग भाषा) एक ऐसी भाषा है: जावा में, -3 / 2
का मूल्यांकन करता है -1
, जबकि -3 >> 1
का मूल्यांकन करता है -2
. तो इस मामले में, जब लाभांश संभवतः नकारात्मक हो सकता है, तो कंपाइलर इसे बिट शिफ्ट द्वारा प्रतिस्थापित करके दो से विभाजन को अनुकूलित नहीं कर सकता है।
बाइनरी फ़्लोटिंग पॉइंट
बाइनरी फ़्लोटिंग-पॉइंट अंकगणित में, घातांक को एक से घटाकर दो से विभाजन किया जा सकता है (जब तक कि परिणाम एक असामान्य संख्या न हो)। कई प्रोग्रामिंग भाषाएं ऐसे फ़ंक्शन प्रदान करती हैं जिनका उपयोग फ़्लोटिंग पॉइंट नंबर को दो की शक्ति से विभाजित करने के लिए किया जा सकता है। उदाहरण के लिए, जावा (प्रोग्रामिंग भाषा) विधि प्रदान करती है java.lang.Math.scalb
दो की शक्ति से स्केलिंग के लिए,[7] और C (प्रोग्रामिंग भाषा) फ़ंक्शन प्रदान करता है ldexp
इसी उद्देश्य के लिए.[8]
दशमलव
निम्नलिखित कलन विधि दशमलव के लिए है। हालाँकि, इसका उपयोग किसी सम और विषम संख्या के आधार में किसी भी संख्या N का आधा हिस्सा लेने के लिए एक एल्गोरिदम बनाने के लिए एक मॉडल के रूप में किया जा सकता है।
- इसके बायीं ओर शून्य लगाकर N लिखें।
- निम्नलिखित तालिका से परिणाम के अंक लिखते हुए, ओवरलैपिंग जोड़ियों में N के अंकों को देखें।
If first digit is | Even | Even | Even | Even | Even | Odd | Odd | Odd | Odd | Odd |
---|---|---|---|---|---|---|---|---|---|---|
And second digit is | 0 or 1 | 2 or 3 | 4 or 5 | 6 or 7 | 8 or 9 | 0 or 1 | 2 or 3 | 4 or 5 | 6 or 7 | 8 or 9 |
Write | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
उदाहरण: 1738/2=?
01738 लिखें। अब हम परिणाम खोजने पर काम करेंगे।
- 01: सम अंक के बाद 1, 0 लिखें।
- 17: विषम अंक के बाद 7, 8 लिखें।
- 73: विषम अंक के बाद 3, 6 लिखें।
- 38: विषम अंक के बाद 8, 9 लिखें।
परिणाम: 0869.
उदाहरण से कोई यह देख सकता है कि 0 सम है।
यदि N का अंतिम अंक सम और विषम संख्या का अंक है तो परिणाम में 0.5 जोड़ना चाहिए।
यह भी देखें
- एक आधा
- माध्यिका, एक मान जो डेटा मानों के एक सेट को दो समान उपसमूहों में विभाजित करता है
- द्विभाजन, एक ज्यामितीय वस्तु का दो बराबर हिस्सों में विभाजन
- मंदीकरण , हथियारों के दो कोटों को उनके डिज़ाइनों को आधे में विभाजित करके जोड़ने की एक हेराल्डिक विधि
संदर्भ
- ↑ Steele, Robert (1922), The Earliest arithmetics in English, Early English Text Society, vol. 118, Oxford University Press, p. 82.
- ↑ Chabert, Jean-Luc; Barbin, Évelyne (1999), A history of algorithms: from the pebble to the microchip, Springer-Verlag, p. 16, ISBN 978-3-540-63369-3.
- ↑ Jackson, Lambert Lincoln (1906), The educational significance of sixteenth century arithmetic from the point of view of the present time, Contributions to education, vol. 8, Columbia University, p. 76.
- ↑ Waters, E. G. R. (1929), "A Fifteenth Century French Algorism from Liége", Isis, 12 (2): 194–236, doi:10.1086/346408, JSTOR 224785, S2CID 144157808.
- ↑ 5.0 5.1 Wadleigh, Kevin R.; Crawford, Isom L. (2000), Software optimization for high-performance computing, Prentice Hall, p. 92, ISBN 978-0-13-017008-8.
- ↑ Hook, Brian (2005), Write portable code: an introduction to developing software for multiple platforms, No Starch Press, p. 133, ISBN 978-1-59327-056-8.
- ↑ "Math.scalb". Java Platform Standard Ed. 6. Retrieved 2009-10-11.
- ↑ Programming languages — C, International Standard ISO/IEC 9899:1999, Section 7.12.6.6.