साइन एक्सटेंशन: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
साइन एक्सटेंशन (सेक्स्ट के रूप में संक्षिप्त) | साइन एक्सटेंशन (सेक्स्ट के रूप में संक्षिप्त)[[कंप्यूटर अंकगणित]] में ऑपरेशन है, संख्या के संकेत (गणित) को संरक्षित करते हुए [[ बाइनरी संख्या ]] के [[ अंश |अंश]] की संख्या को बढ़ाया जाता है, लेकिन नंबर के साइन (सकारात्मक/नकारात्मक) को संरक्षित रखा जाता है। यह उपयोग किए गए विशेष [[हस्ताक्षरित संख्या प्रतिनिधित्व]] पर निर्भर प्रक्रिया के बाद, संख्या के [[सबसे महत्वपूर्ण बिट]] पक्ष में अंकों को जोड़कर किया जाता है। | ||
उदाहरण के लिए, यदि संख्या | उदाहरण के लिए, यदि संख्या <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> होता है। इस तरह से, बाएं ओर के जनरल पर्सपोज रखकर अपने साथ एक दोष और मूल संख्या का मान बनाए रखने से नकारात्मक चिह्न और मूल संख्या का मान बरकरार रहता है। | ||
[[इंटेल]] x86 | [[इंटेल]] x86 इंस्ट्रक्शन सेट में, उदाहरण के लिए, साइन एक्सटेंशन करने के दो तरीके होते हैं: | ||
* निर्देशों का उपयोग करना <code>cbw</code>, <code>cwd</code>, <code>cwde</code>, और <code>cdq</code>: बाइट | * निर्देशों का उपयोग करना <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> | 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 | 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:Дополнительный код (представление числа)#Расширение зна