साइन एक्सटेंशन: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
साइन एक्सटेंशन (सेक्स्ट के रूप में संक्षिप्त) ऑपरेशन है, [[कंप्यूटर अंकगणित]] में, संख्या के संकेत (गणित) को संरक्षित करते हुए [[ बाइनरी संख्या ]] के [[ अंश ]]्स की संख्या बढ़ाने के लिए | साइन (सकारात्मक/नकारात्मक) और मान। यह उपयोग किए गए विशेष [[हस्ताक्षरित संख्या प्रतिनिधित्व]] पर निर्भर प्रक्रिया के बाद, संख्या के [[सबसे महत्वपूर्ण बिट]] पक्ष में अंकों को जोड़कर किया जाता है।
साइन एक्सटेंशन (सेक्स्ट के रूप में संक्षिप्त)[[कंप्यूटर अंकगणित]] में ऑपरेशन है, संख्या के संकेत (गणित) को संरक्षित करते हुए [[ बाइनरी संख्या ]] के [[ अंश |अंश]] की संख्या को बढ़ाया जाता है, लेकिन नंबर के साइन (सकारात्मक/नकारात्मक) को संरक्षित रखा जाता है। यह उपयोग किए गए विशेष [[हस्ताक्षरित संख्या प्रतिनिधित्व]] पर निर्भर प्रक्रिया के बाद, संख्या के [[सबसे महत्वपूर्ण बिट]] पक्ष में अंकों को जोड़कर किया जाता है।


उदाहरण के लिए, यदि संख्या का प्रतिनिधित्व करने के लिए छह बिट्स का उपयोग किया जाता है<code>00 1010</code>(दशमलव सकारात्मक 10) और साइन एक्सटेंड ऑपरेशन वर्ड (डेटा प्रकार) को 16 बिट तक बढ़ा देता है, फिर नया प्रतिनिधित्व बस होता है<code>0000 0000 0000 1010</code>. इस प्रकार, मूल्य और तथ्य दोनों कि मूल्य धनात्मक था बनाए रखा जाता है।
उदाहरण के लिए, यदि संख्या <code>00 1010</code> (दशमलव सकारात्मक 10) का प्रतिनिधित्व करने के लिए छह बिट्स का उपयोग किया जाता है और साइन एक्सटेंड ऑपरेशन वर्ड (डेटा प्रकार) को 16 बिट तक बढ़ा देता है, तो नया प्रतिनिधित्व सिर्फ<code>0000 0000 0000 1010</code>होता है। इस प्रकार, नंबर के मान और यह तथ्य दोनों बनाए रखे जाते हैं कि मान धनात्मक है।


यदि मूल्य का प्रतिनिधित्व करने के लिए दस बिट्स का उपयोग किया जाता है<code>11 1111 0001</code>(दशमलव ऋणात्मक 15) दो के पूरक का उपयोग करते हुए, और यह चिन्ह 16 बिट तक बढ़ाया गया है, नया प्रतिनिधित्व है<code>1111 1111 1111 0001</code>. इस प्रकार, बाईं ओर एक के साथ पैडिंग करके, ऋणात्मक चिह्न और मूल संख्या का मान बनाए रखा जाता है।
यदि दो संकेत उपयोग करके दो कम्प्लीमेंट द्वारा <code>11 1111 0001</code>(दशमलव ऋणात्मक 15) के मान को दर्शाने के लिए दस बिट का उपयोग किया जाता है और इसे 16 बिट में साइन एक्सटेंशन किया जाता है, तो नया प्रतिनिधित्व<code>1111 1111 1111 0001</code> होता है। इस तरह से, बाएं ओर के जनरल पर्सपोज रखकर अपने साथ एक दोष और मूल संख्या का मान बनाए रखने से नकारात्मक चिह्न और मूल संख्या का मान बरकरार रहता है।


[[इंटेल]] x86 निर्देश सूची में, उदाहरण के लिए, साइन एक्सटेंशन करने के दो विधिया हैं:
[[इंटेल]] x86 इंस्ट्रक्शन सेट में, उदाहरण के लिए, साइन एक्सटेंशन करने के दो तरीके होते हैं:
* निर्देशों का उपयोग करना <code>cbw</code>, <code>cwd</code>, <code>cwde</code>, और <code>cdq</code>: बाइट को शब्द में, शब्द को डबलवर्ड में, शब्द को विस्तारित डबलवर्ड में, और डबलवर्ड को क्वाडवर्ड में परिवर्तित करें, क्रमशः (x86 संदर्भ में एक बाइट में 8 बिट्स, एक शब्द 16 बिट्स, एक डबलवर्ड और विस्तारित डबलवर्ड 32 बिट्स और एक क्वाडवर्ड 64 बिट्स हैं। );
* निर्देशों का उपयोग करना <code>cbw</code>, <code>cwd</code>, <code>cwde</code>, और <code>cdq</code> का उपयोग करके: बाइट से वर्ड, वर्ड से डबलवर्ड, वर्ड से एक्सटेंडेड डबलवर्ड और डबलवर्ड से क्वाडवर्ड में कन्वर्ट करें, उल्लेखनीय हैं (x86 संदर्भ में एक बाइट में 8 बिट होते हैं, एक वर्ड में 16 बिट, एक डबलवर्ड और एक्सटेंडेड डबलवर्ड में 32 बिट और एक क्वाडवर्ड में 64 बिट होते हैं);
* साइन विस्तारित चालों में से एक का उपयोग करके, द्वारा पूरा किया गया  <code>movsx</code> (साइन एक्सटेंशन के साथ आगे बढ़ें) निर्देशों का परिवार।
* साइन विस्तारित चालों में से एक का उपयोग करके, द्वारा पूरा किया गया  <code>movsx</code> (साइन एक्सटेंशन के साथ आगे बढ़ें) निर्देशों का परिवार।


== शून्य विस्तार ==
== शून्य विस्तार ==
एक समान अवधारणा शून्य विस्तार (zext के रूप में संक्षिप्त) है। मूव या कन्वर्ट ऑपरेशन में, शून्य एक्सटेंशन गंतव्य के उच्च बिट्स को शून्य पर सेट करने के अतिरिक्त उन्हें स्रोत के सबसे महत्वपूर्ण बिट की कॉपी पर सेट करने के लिए संदर्भित करता है। यदि ऑपरेशन का स्रोत एक अहस्ताक्षरित संख्या है, तो शून्य विस्तार सामान्यतः इसके संख्यात्मक मान को संरक्षित करते हुए इसे एक बड़े क्षेत्र में ले जाने का सही विधि है, चूँकि हस्ताक्षरित संख्याओं के लिए साइन एक्सटेंशन सही है।
एक समान अवधारणा शून्य विस्तार (zext के रूप में संक्षिप्त) है। एक स्थानांतरण या परिवर्तन आपरेशन में, शून्य विस्तार उच्चतम बिट को स्रोत के सबसे महत्वपूर्ण बिट की प्रतिलिपि करने के बजाय उसे शून्य पर सेट करने का संकेत देता है। यदि ऑपरेशन का स्रोत एक असाइन्ड नंबर है, तो शून्य विस्तार आमतौर पर उसे एक बड़े फ़ील्ड में ले जाने के लिए सही तरीका है जबकि उसके आंकिक मान को संरक्षित रखता है, जबकि साइन एक्सटेंशन साइन्ड नंबर के लिए सही है।


X86 और x64 निर्देश सेट में, <code>movzx</code> निर्देश (शून्य विस्तार के साथ चलें) इस कार्य को करता है। उदाहरण के लिए, <code>movzx ebx, al</code> से एक बाइट कॉपी करता है <code>al</code> के लो-ऑर्डर बाइट में रजिस्टर करें <code>ebx</code> और फिर के शेष बाइट भरता है <code>ebx</code> शून्य के साथ होता है।
X86 और x64 निर्देश सेट में, <code>movzx</code> निर्देश (शून्य विस्तार के साथ चलें) इस कार्य को करता है। उदाहरण के लिए, <code>movzx ebx, al</code> <code>al</code>रजिस्टर से एक बाइट की प्रतिलिपि को <code>ebx</code> के कम आदेश बाइट में कॉपी करता है और फिर <code>ebx</code> के बचे हुए बाइट्स को शून्यों से भरता है।


X64 पर, अधिकांश निर्देश जो किसी भी सामान्य-उद्देश्य वाले रजिस्टरों के निचले 32 बिट्स की संपूर्णता को लिखते हैं, गंतव्य रजिस्टर के ऊपरी आधे भाग को शून्य कर देंगे। उदाहरण के लिए, निर्देश <code>mov eax, 1234</code> के ऊपरी 32 बिट्स को साफ कर देगा <code>rax</code>{{Efn|[[X86#64-bit|RAX - 64 bit accumulator]]}} पंजीकरण करवाना होता है।
X64 पर, अधिकांश निर्देश जो किसी भी सामान्य-उद्देश्य वाले रजिस्टरों के निचले 32 बिट्स की संपूर्णता को लिखते हैं, गंतव्य रजिस्टर के ऊपरी आधे भाग को शून्य कर देंगे। उदाहरण के लिए, निर्देश <code>mov eax, 1234 rax{{Efn|[[X86#64-bit|RAX - 64 bit accumulator]]}}</code> के ऊपरी 32 बिट्स को साफ कर देगा पंजीकरण करवाना होता है।


== यह भी देखें ==
== यह भी देखें ==

Revision as of 19:13, 28 April 2023

साइन एक्सटेंशन (सेक्स्ट के रूप में संक्षिप्त)कंप्यूटर अंकगणित में ऑपरेशन है, संख्या के संकेत (गणित) को संरक्षित करते हुए बाइनरी संख्या के अंश की संख्या को बढ़ाया जाता है, लेकिन नंबर के साइन (सकारात्मक/नकारात्मक) को संरक्षित रखा जाता है। यह उपयोग किए गए विशेष हस्ताक्षरित संख्या प्रतिनिधित्व पर निर्भर प्रक्रिया के बाद, संख्या के सबसे महत्वपूर्ण बिट पक्ष में अंकों को जोड़कर किया जाता है।

उदाहरण के लिए, यदि संख्या 00 1010 (दशमलव सकारात्मक 10) का प्रतिनिधित्व करने के लिए छह बिट्स का उपयोग किया जाता है और साइन एक्सटेंड ऑपरेशन वर्ड (डेटा प्रकार) को 16 बिट तक बढ़ा देता है, तो नया प्रतिनिधित्व सिर्फ0000 0000 0000 1010होता है। इस प्रकार, नंबर के मान और यह तथ्य दोनों बनाए रखे जाते हैं कि मान धनात्मक है।

यदि दो संकेत उपयोग करके दो कम्प्लीमेंट द्वारा 11 1111 0001(दशमलव ऋणात्मक 15) के मान को दर्शाने के लिए दस बिट का उपयोग किया जाता है और इसे 16 बिट में साइन एक्सटेंशन किया जाता है, तो नया प्रतिनिधित्व1111 1111 1111 0001 होता है। इस तरह से, बाएं ओर के जनरल पर्सपोज रखकर अपने साथ एक दोष और मूल संख्या का मान बनाए रखने से नकारात्मक चिह्न और मूल संख्या का मान बरकरार रहता है।

इंटेल x86 इंस्ट्रक्शन सेट में, उदाहरण के लिए, साइन एक्सटेंशन करने के दो तरीके होते हैं:

  • निर्देशों का उपयोग करना cbw, cwd, cwde, और cdq का उपयोग करके: बाइट से वर्ड, वर्ड से डबलवर्ड, वर्ड से एक्सटेंडेड डबलवर्ड और डबलवर्ड से क्वाडवर्ड में कन्वर्ट करें, उल्लेखनीय हैं (x86 संदर्भ में एक बाइट में 8 बिट होते हैं, एक वर्ड में 16 बिट, एक डबलवर्ड और एक्सटेंडेड डबलवर्ड में 32 बिट और एक क्वाडवर्ड में 64 बिट होते हैं);
  • साइन विस्तारित चालों में से एक का उपयोग करके, द्वारा पूरा किया गया movsx (साइन एक्सटेंशन के साथ आगे बढ़ें) निर्देशों का परिवार।

शून्य विस्तार

एक समान अवधारणा शून्य विस्तार (zext के रूप में संक्षिप्त) है। एक स्थानांतरण या परिवर्तन आपरेशन में, शून्य विस्तार उच्चतम बिट को स्रोत के सबसे महत्वपूर्ण बिट की प्रतिलिपि करने के बजाय उसे शून्य पर सेट करने का संकेत देता है। यदि ऑपरेशन का स्रोत एक असाइन्ड नंबर है, तो शून्य विस्तार आमतौर पर उसे एक बड़े फ़ील्ड में ले जाने के लिए सही तरीका है जबकि उसके आंकिक मान को संरक्षित रखता है, जबकि साइन एक्सटेंशन साइन्ड नंबर के लिए सही है।

X86 और x64 निर्देश सेट में, movzx निर्देश (शून्य विस्तार के साथ चलें) इस कार्य को करता है। उदाहरण के लिए, movzx ebx, al alरजिस्टर से एक बाइट की प्रतिलिपि को ebx के कम आदेश बाइट में कॉपी करता है और फिर ebx के बचे हुए बाइट्स को शून्यों से भरता है।

X64 पर, अधिकांश निर्देश जो किसी भी सामान्य-उद्देश्य वाले रजिस्टरों के निचले 32 बिट्स की संपूर्णता को लिखते हैं, गंतव्य रजिस्टर के ऊपरी आधे भाग को शून्य कर देंगे। उदाहरण के लिए, निर्देश mov eax, 1234 rax[lower-alpha 1] के ऊपरी 32 बिट्स को साफ कर देगा पंजीकरण करवाना होता है।

यह भी देखें

संदर्भ

  • Mano, Morris M.; Kime, Charles R. (2004). Logic and Computer Design Fundamentals (3rd ed.), pp 453. Pearson Prentice Hall. ISBN 0-13-140539-X.


टिप्पणियाँ

[[ru:Дополнительный код (представление числа)#Расширение зна