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

From Vigyanwiki
(Created page with "साइन एक्सटेंशन (सेक्स्ट के रूप में संक्षिप्त) ऑपरेशन है, कंप्यूटर...")
 
No edit summary
Line 5: Line 5:
यदि मूल्य का प्रतिनिधित्व करने के लिए दस बिट्स का उपयोग किया जाता है<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</code> के ऊपरी 32 बिट्स को साफ कर देगा <code>rax</code>{{Efn|[[X86#64-bit|RAX - 64 bit accumulator]]}} पंजीकरण करवाना होता है।


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

Revision as of 14:40, 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 के ऊपरी 32 बिट्स को साफ कर देगा rax[lower-alpha 1] पंजीकरण करवाना होता है।

यह भी देखें

संदर्भ

  • 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:Дополнительный код (представление числа)#Расширение зна