अतिरिक्त कोड का उपयोग कर अंकगणितीय संचालन। अतिरिक्त कोड (संख्या प्रतिनिधित्व)

मुख्य लेख: विस्फोटक सामान्य रूप

सरल संयोजन   या संयोजक   चर के कुछ सीमित सेट या उनकी अस्वीकृति के संयोजन कहा जाता है, और प्रत्येक चर एक बार से अधिक नहीं होता है। विस्फोटक सामान्य रूप   या वियोगी सामान्य रूप   सरल संयोजन के संयोजन कहा जाता है। प्राथमिक संयोजन

    सहीयदि प्रत्येक चर में इसे एक से अधिक बार शामिल नहीं किया गया है (अस्वीकृति सहित);

    संपूर्णयदि प्रत्येक चर (या इसकी अस्वीकृति) वास्तव में 1 बार प्रवेश करती है;

    monotonicयदि इसमें चर के नकारात्मक नहीं हैं।

उदाहरण के लिए - डीएनएफ है।

बिल्कुल सही विस्फोटक सामान्य रूप   या PDNF   चर के कुछ सीमित सेट के सापेक्ष, ऐसे डीएनएफ को बुलाया जाता है, जिसमें प्रत्येक चर में दिए गए सेट के सभी चर होते हैं, इसके अलावा उसी क्रम में। उदाहरण के लिए:।

यह सत्यापित करना आसान है कि एक निश्चित डीएनएफ प्रत्येक बूलियन फ़ंक्शन से मेल खाता है, और यहां तक ​​कि डीएनएफएन समान शून्य के अलावा किसी फ़ंक्शन पर भी मेल खाता है। इसके लिए, यह सभी बूलियन वैक्टरों को खोजने के लिए पर्याप्त है जिन पर इसका कार्य इस कार्य की सच्ची तालिका में 1 है, और प्रत्येक ऐसे वेक्टर के संयोजन के लिए कहाँ। इन संयोजनों का संयोजन मूल कार्य का पीडीएनएफ है, क्योंकि सभी बूलियन वैक्टरों पर इसके मूल्य मूल कार्य के मूल्यों के साथ मेल खाते हैं। उदाहरण के लिए, निहितार्थ के लिए, परिणाम यह है कि आप इसे सरल बना सकते हैं।

[उद्धरण वांछित] संयोजन सामान्य रूप (एनएफएफ)

मुख्य लेख: संयोजन सामान्य रूप

संगत सामान्य रूप 1   (सीएनएफ) डीएनएफ को धीरे-धीरे निर्धारित किया जाता है। सरल संयोजन   या एक खंड   एक या कई चर या उनके अस्वीकरण का संयोजन कहा जाता है, और प्रत्येक चर इसे एक से अधिक बार प्रवेश नहीं करता है। सीएनएफ सरल विसंगतियों का संयोजन है।

बिल्कुल सही संयोजन सामान्य रूप   (एसकेएनएफ), चर के कुछ सीमित सेट के संबंध में, ऐसे सीएनएफ कहा जाता है, जिसमें दिए गए सेट के सभी चर प्रत्येक संयोजन में और उसी क्रम में शामिल होते हैं। चूंकि (सी) सीएनएफ और (सी) डीएनएफ परस्पर दोहरी हैं, सीएनएफ के गुण (सी) (सी) डीएनएफ के सभी गुणों को दोहराते हैं, मोटे तौर पर बोलते हुए, "बिल्कुल विपरीत"।

नियम के अनुसार ब्रैकेट खोलकर एक सीएनएफ को इसके समकक्ष डीएनएफ में परिवर्तित किया जा सकता है:

जो संयोजन के संबंध में संयोजन की वितरण को व्यक्त करता है। इसके बाद, प्रत्येक संयोजन में दोहराए गए चर या उनकी अस्वीकृति को हटाने के लिए आवश्यक है, और यह भी संयोजन से अलग करने के लिए कि वेरिएबल को नकारात्मक के साथ सामना करना पड़ता है। इस मामले में, परिणाम पीडीएनएफ नहीं होगा, भले ही मूल सीएनएफ सीएनएफ था। इसी तरह, आप हमेशा डीएनएफ से सीएनएफ तक जा सकते हैं। ऐसा करने के लिए, नियम का प्रयोग करें

संयोजन के संबंध में संयोजन की वितरणशीलता व्यक्त करना। परिणाम उपरोक्त वर्णित तरीके से परिवर्तित किया जाना चाहिए, "संयोजन" शब्द को "संयोजन" के साथ बदलना और इसके विपरीत।

16 तार्किक अभिव्यक्तियों के परिवर्तन के कानून: एक जोड़ी तत्व, अस्वीकृति।

तर्क के बीजगणित में, ऐसे कानून हैं जो संबंधों के रूप में लिखे गए हैं। तार्किक कानून तार्किक अभिव्यक्तियों के बराबर (समतुल्य) परिवर्तनों की अनुमति देते हैं। परिवर्तनों को समकक्ष कहा जाता है यदि मूल के वास्तविक मूल्य और तार्किक कार्य के परिवर्तन के बाद प्राप्त होते हैं, उनमें मौजूद तार्किक चर के सभी मानों के लिए समान होते हैं।

सादगी के लिए, हम दो तार्किक चर के लिए तर्क के बीजगणित के मूलभूत नियम प्रस्तुत करते हैं। एकऔर वीये कानून अन्य तार्किक चर पर लागू होते हैं।

1. विरोधाभास का कानून:

2. बहिष्कृत मध्य का कानून:

3. डबल अस्वीकृति का कानून:

4. मॉर्गन के कानून:

5. पुनरावृत्ति के नियम: ए और ए = ए; ए वी ए = ए; बी एंड बी = बी; बी वी बी = बी

6. अवशोषण के कानून: एक   (ए और बी) = ए; ए और (ए   बी) = ए

7. स्थिरांक के बहिष्कार के नियम: एक   1 = 1; एक   0 = ए; ए और 1 = ए; ए और 0 = 0; बी   1 = 1; बी   0 = बी; बी और 1 = बी; बी और 0 = 0।

8. ग्लूइंग के नियम:

9. contraposition का कानून: (ए   बी) = (बी   ए)।

तार्किक चर के लिए, सामान्य गणितीय कानून भी मान्य हैं। सादगी के लिए, हम तीन तार्किक चर के लिए सामान्य गणितीय कानून देते हैं। ए, बी और सी:

1. कम्यूटिव कानून: ए और बी = बी एंड ए; एक   बी = बी   ए

2. सहयोगी कानून: ए और (बी एंड सी) = (ए और बी) और सी; एक   (बी   सी) = (ए   बी)   सी

3. वितरक कानून: ए और (बी   सी) = (ए और बी)   (ए और सी)।

जैसा कि पहले से ही उल्लेख किया गया है, तर्क के बीजगणित के नियमों का उपयोग करके, हम उन्हें सरल बनाने के लिए तार्किक अभिव्यक्तियों के समतुल्य परिवर्तनों का उत्पादन कर सकते हैं। तर्क के बीजगणित में, तार्किक परिचालन करने के लिए निम्नलिखित नियम (प्राथमिकताएं) समझौते के आधार पर स्थापित की जाती हैं: संचालन पहले ब्रैकेट में किया जाता है, फिर निम्न क्रम में: उलटा (अस्वीकरण), संयोजन (&), संयोजन (v), निहितार्थ (⇒), समकक्ष (⇔)

एक रूपांतरण करें, उदाहरण के लिए, एक तर्क समारोह

तर्क के बीजगणित के उचित कानूनों को लागू करना।

17 तार्किक अभिव्यक्तियों के परिवर्तन के कानून: संयोजन कानून।

औपचारिक तर्क के नियम

विचारों के बीच सबसे सरल और आवश्यक सत्य कनेक्शन औपचारिक तर्क के मूलभूत कानूनों में व्यक्त किए जाते हैं। इस तरह के कानून, गैर विरोधाभास के नियम हैं, तीसरे, पर्याप्त कारण को छोड़ दिया गया है।

ये कानून मौलिक हैं क्योंकि तर्क में वे विशेष रूप से महत्वपूर्ण भूमिका निभाते हैं, सबसे आम हैं। वे हमें तार्किक अभिव्यक्तियों को सरल बनाने और निष्कर्षों और प्रमाणों को बनाने की अनुमति देते हैं। उपर्युक्त कानूनों में से पहले तीनों की पहचान अरिस्टोटल द्वारा की गई थी, और पर्याप्त कारणों के कानून - जी। लिबनिज़।

पहचान का कानून: एक निश्चित तर्क की प्रक्रिया में, प्रत्येक अवधारणा और निर्णय स्वयं के साथ समान होना चाहिए।

गैर विरोधाभास का कानून: यह असंभव है कि एक ही समय में वही एक ही संबंध में अंतर्निहित नहीं है। यही है, एक ही समय में कुछ कहना और अस्वीकार करना असंभव है।

बहिष्कृत मध्य का कानून: दो विरोधाभासी निर्णयों में से एक सत्य है, दूसरा गलत है, और तीसरा नहीं दिया गया है।

पर्याप्त कारण का कानून: हर सच्चे विचार को पर्याप्त रूप से प्रमाणित किया जाना चाहिए।

आखिरी कानून कहता है कि कुछ का प्रमाण सटीक और केवल सच्चे विचारों की ताकत का तात्पर्य है। झूठे विचार साबित नहीं किए जा सकते हैं। एक अच्छी लैटिन नीति है: "गलती करने के लिए हर व्यक्ति की विशेषता है, लेकिन एक त्रुटि पर जोर देने के लिए केवल मूर्ख की विशेषता है।" इस कानून का सूत्र नहीं है, क्योंकि इसमें केवल एक सार्थक चरित्र है। सच्चे विचार, सच्चे निर्णय, तथ्यात्मक सामग्री, आंकड़े, विज्ञान के कानून, सिद्धांत, साबित प्रमेय का उपयोग करने के लिए तर्कों के रूप में उपयोग किया जा सकता है।

वाक्यों के बीजगणित के नियम

बयान के बीजगणित (तर्क के बीजगणित) गणितीय तर्क की एक शाखा है जो बयान पर तार्किक संचालन और जटिल वक्तव्यों को बदलने के नियमों का अध्ययन करती है।

कई तार्किक समस्याओं को हल करते समय, अक्सर अपनी परिस्थितियों को औपचारिक रूप से प्राप्त सूत्रों को सरल बनाना आवश्यक होता है। बयान के बीजगणित में सूत्रों का सरलीकरण बुनियादी तार्किक कानूनों के आधार पर समकक्ष परिवर्तनों के आधार पर किया जाता है।

प्रस्तावों के बीजगणित के नियम (तर्क के बीजगणित) tautologies हैं।

कभी-कभी इन कानूनों को प्रमेय कहा जाता है।

बयानों के बीजगणित में, तार्किक कानून समकक्ष सूत्रों की समानता के रूप में व्यक्त किए जाते हैं। कानूनों में से एक ऐसा है जिसमें एक चर शामिल है।

नीचे दिए गए कानूनों में से पहला चार बयानों के बीजगणित के मूल कानून हैं।

पहचान का कानून:

हर अवधारणा और निर्णय खुद के समान है।

पहचान के कानून का अर्थ है कि तर्क की प्रक्रिया में किसी दूसरे के लिए एक विचार को प्रतिस्थापित करना असंभव है, एक दूसरे के लिए एक अवधारणा। यदि इस कानून का उल्लंघन किया गया है, तो तार्किक त्रुटियां संभव हैं।

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

तर्क में: आंदोलन हमेशा के लिए। स्कूल जाना एक आंदोलन है। इसलिए, हमेशा के लिए स्कूल जा रहे हैंशब्द "आंदोलन" का प्रयोग दो अलग-अलग इंद्रियों में किया जाता है (पहला - दार्शनिक अर्थ में - पदार्थ की विशेषता के रूप में, दूसरा - सामान्य अर्थ में - अंतरिक्ष में आंदोलन के लिए एक क्रिया के रूप में), जो एक झूठी निष्कर्ष की ओर जाता है।

गैर विरोधाभास का कानून:

निर्णय और उसकी अस्वीकृति एक ही समय में सच नहीं हो सकती है। यही है, अगर बयान एक- सच, उसका इनकार नहींझूठा होना चाहिए (और इसके विपरीत)। तब उनका काम हमेशा झूठा होगा।

18 तार्किक कार्यों की विश्लेषणात्मक रिकॉर्डिंग को कम करना: कार्नाट मानचित्र विधि।

कर्ण नक्शा   - स्विचिंग (बूलियन) कार्यों को कम करने के लिए एक ग्राफिकल तरीका, बड़े अभिव्यक्तियों के साथ काम करने की सापेक्ष सादगी प्रदान करना और संभावित दौड़ को खत्म करना।

एक नकारात्मक संख्या का एक अतिरिक्त कोड बाइनरी संख्या (पहले जोड़) के मॉड्यूलस को परिवर्तित करके और उलटा (दूसरा जोड़) में जोड़कर, या शून्य से संख्या घटाकर प्राप्त किया जा सकता है।

बाइनरी संख्या के अतिरिक्त कोड (2 के अतिरिक्त) 1 को इसके अतिरिक्त के कम से कम महत्वपूर्ण अंक में 1 जोड़कर प्राप्त किया जाता है।

बाइनरी 8-बिट संख्या एक संकेत के साथ   अतिरिक्त कोड में -128 से +127 तक की सीमा में किसी भी पूर्णांक का प्रतिनिधित्व कर सकते हैं। यदि प्रमुख अंक शून्य है, तो शेष 7 अंकों में लिखा जा सकता है कि सबसे बड़ा पूर्णांक है    2 7 - 1 (\\ displaystyle 2 ^ (7) -1)वह 127 है।

दशमलव
विचार
बाइनरी प्रतिनिधित्व (8 बिट्स)
सीधे वापसी अतिरिक्त
127 01111111 01111111 01111111
1 00000001 00000001 00000001
0 00000000 00000000 00000000
-0 10000000 11111111 ---
-1 10000001 11111110 11111111
-2 10000010 11111101 11111110
-3 10000011 11111100 11111101
-4 10000100 11111011 11111100
-5 10000101 11111010 11111011
-6 10000110 11111001 11111010
-7 10000111 11111000 11111001
-8 10001000 11110111 11111000
-9 10001001 11110110 11110111
-10 10001010 11110101 11110110
-11 10001011 11110100 11110101
-127 11111111 10000000 10000001
-128 --- --- 10000000

दशमलव संख्या के लिए अतिरिक्त कोड

दशमलव सिद्धांतों के कंप्यूटर प्रतिनिधित्व में भी वही सिद्धांत का उपयोग किया जा सकता है: प्रत्येक अंक के लिए, अंक एक्स को 9-एक्स द्वारा प्रतिस्थापित किया जाता है, और परिणामी संख्या जोड़ दी जाती है। उदाहरण के लिए, चार अंकों की संख्या -0081 का उपयोग करते समय, इसे 9919 (9919 + 0081 = 0000, पांचवां अंक बाहर फेंक दिया)।

सामान्य 10-बिट संख्या प्रणाली के लिए एक ही विचार को लागू करते समय, यह निकल जाएगा (उदाहरण के लिए, 10-बिट संख्या प्रणाली का उपयोग करके एक काल्पनिक प्रोसेसर के लिए):

10 वीं अंक प्रणाली
  ("सामान्य" प्रविष्टि)
10 वीं अंक प्रणाली
  अतिरिक्त कोड
... ...
13 0013
12 0012
11 0011
10 0010
9 0009
8 0008
... ...
2 0002
1 0001
0 0000
-1 9999
-2 9998
-3 9997
-4 9996
... ...
-9 9991
-10 9990
-11 9989
-12 9988
... ...

अतिरिक्त कोड में रूपांतरण

एक सीधा कोड से एक अतिरिक्त संख्या में कनवर्ट करना निम्नलिखित एल्गोरिदम के अनुसार किया जाता है।

  1. यदि प्रत्यक्ष कोड में लिखी गई संख्या सकारात्मक है, तो 0 के बराबर अग्रणी (चिह्न) अंक इसमें जोड़ा जाता है, और रूपांतरण वहां समाप्त होता है;
  2. यदि प्रत्यक्ष कोड में लिखी गई संख्या ऋणात्मक है, तो संख्या के सभी अंक उलटा हो जाते हैं, और परिणाम में 1 जोड़ा जाता है। सबसे महत्वपूर्ण अंक (1) परिणामी संख्या में जोड़ा जाता है।

एक उदाहरण हम प्रत्यक्ष कोड में लिखे गए ऋणात्मक संख्या -5 को एक अतिरिक्त में बदलते हैं। संख्या -5 ले लिया मॉड्यूल का सीधा कोड:

  रिवर्स कोड:

परिणाम 1 में जोड़ें

आइए बाईं ओर एक अंक एक अंक जोड़ें।

उलटा परिवर्तन के लिए, एक ही एल्गोरिदम का उपयोग किया जाता है। अर्थात्:

हम संख्या के सभी अंकों को उलटा करते हैं, इस प्रकार एक रिवर्स कोड प्राप्त करते हैं:

परिणाम 1 में जोड़ें

और अतिरिक्त कोड के साथ जोड़ने, जांचें

0101 + 1011 = 10000, पांचवां अंक फेंक दिया गया है।

पी-एडिक संख्याएं

सिस्टम में पी-एडिक संख्या संख्या को अपने अतिरिक्त कोड में परिवर्तित करके संख्या का संकेत बदलती है। उदाहरण के लिए, यदि 5-संख्यात्मक संख्या प्रणाली का उपयोग किया जाता है, तो 1000 के विपरीत संख्या ... (1) 4444 है .... (-1)।

अतिरिक्त कोड में रूपांतरण के लिए एल्गोरिदम का कार्यान्वयन (8-बिट संख्याओं के लिए)

पास्कल

अगर ए< 0 then a := ((not a ) or 128 ) + 1 ;

सी / सी ++

इंट कन्वर्ट (int ए) (अगर (ए< 0 ) a = ( ~- a | 128 ) + 1 ; return a ; }

फायदे और नुकसान

फायदे

  • हस्ताक्षर किए गए और हस्ताक्षरित संख्याओं के लिए अतिरिक्त, अनुक्रम और बाएं शिफ्ट के लिए सामान्य निर्देश (प्रोसेसर) (केवल अंकगणितीय झंडे में अंतर जो परिणामों में ओवरफ़्लो को नियंत्रित करने के लिए जांचने की आवश्यकता है)।
  • संख्या "शून्य शून्य" की अनुपस्थिति।

कमियों

  • ऋणात्मक संख्या का प्रतिनिधित्व सामान्य नियमों द्वारा पठनीय नहीं है, इसकी धारणा के लिए आपको विशेष कौशल या गणना की आवश्यकता होती है
  • कुछ प्रस्तुतियों में (उदाहरण के लिए, एक बाइनरी-दशमलव कोड) या उनके घटक भाग (उदाहरण के लिए, एक फ़्लोटिंग-पॉइंट नंबर का मंटिसा), अतिरिक्त कोडिंग असुविधाजनक है
  • सबसे बड़ी संख्या का मॉड्यूलस सबसे छोटी संख्या के मॉड्यूलस के बराबर नहीं है। उदाहरण के लिए, एक चिह्न के साथ आठ-बिट पूर्णांक के लिए, अधिकतम संख्या: 127 10 = 01111111 2, न्यूनतम संख्या: -128 10 = 10000000 2। तदनुसार, विपरीत किसी भी संख्या के लिए सच नहीं है। एक साइन चेंज ऑपरेशन के लिए अतिरिक्त सत्यापन की आवश्यकता हो सकती है।

बाइनरी कोड में संख्या का संकेत निर्धारित करने के लिए, 0 और 1 का उपयोग किया जाता है। शून्य के साथ, "+" चिह्न को कोड किया जाता है, इकाई को "-" संकेत द्वारा कोड किया जाता है।

कंप्यूटिंग में सकारात्मक और नकारात्मक संख्याओं के प्रतिनिधित्व के लिए प्रत्यक्ष, रिवर्स और अतिरिक्त कोड का उपयोग किया जाता है।

सकारात्मक संख्या   आगे, रिवर्स, और अतिरिक्त कोड उसी तरह प्रदर्शित होते हैं - साइन बिट में अंक 0 के साथ बाइनरी कोड। उदाहरण के लिए:

नकारात्मक संख्याएं   सीधे, रिवर्स और अतिरिक्त कोड में एक अलग छवि होती है।

1. डायरेक्ट कोड। अंक 1 को अंकों के अंक में रखा गया है, और इसके पूर्ण मूल्य का बाइनरी कोड संख्या के डिजिटल भाग के अंकों में रखा गया है। उदाहरण के लिए:

2. रिवर्स कोड। यह संकेत के अंक सहित, संख्या के पूर्ण मूल्य के बाइनरी कोड के सभी अंकों को इनवर्ट करके बदल जाता है: शून्य को प्रतिस्थापित किया जाता है, और शून्य से। उदाहरण के लिए:

3. अतिरिक्त कोड। यह रिटर्न कोड के गठन को इसके बाद के युवा वर्ग में इसके अतिरिक्त जोड़ के साथ बदल देता है। उदाहरण के लिए:

आमतौर पर, मशीन में प्रवेश करते समय ऋणात्मक दशमलव संख्या स्वचालित रूप से रिवर्स या अतिरिक्त बाइनरी कोड में परिवर्तित हो जाती है और इस रूप में संचालन में स्थानांतरित, स्थानांतरित और शामिल होती है। कार से ऐसी संख्याएं प्राप्त करते समय, ऋणात्मक दशमलव संख्याओं में रूपांतरण को उलट दें।

उदाहरण:   प्रत्यक्ष, रिवर्स और अतिरिक्त कोड में संख्या +7, -12, -15, -16 प्रस्तुत करें।

अनुवाद करते समय रिवर्स से सीधे में   कोड होता है संख्या उलटा.

अनुवाद करते समय अतिरिक्त से सीधे कोड तक   है 1) संख्या के अंकों का उलटा, 2)+1 जोड़ा गया है   उल्टा संख्या के कम क्रम के लिए।

हस्ताक्षरित संख्याओं पर अंकगणितीय परिचालन

अधिकांश कंप्यूटरों में, घटाव ऑपरेशन का उपयोग नहीं किया जाता है। इसके बजाय, उलटा या अतिरिक्त कोड जोड़ने और घटाया गया है। यह आपको एएलयू के डिजाइन को काफी सरल बनाने की अनुमति देता है।

रिवर्स कोड जोड़ना .   यहां, संख्या ए और बी जोड़ते समय, चार मुख्य और दो विशेष मामले हैं:

बीजगणितीय जोड़

यदि परिणाम एक ऋण चिह्न ("1" के साथ) के साथ प्राप्त किया जाता है, तो परिणाम आवश्यक है   सीधे कोड में कनवर्ट करें !!!

1. ए और बी सकारात्मक हैं।   संक्षेप में, संकेत के अंक सहित सभी अंक जोड़े गए हैं। चूंकि सकारात्मक शर्तों के संकेत अंक शून्य हैं, इसलिए योग चिह्न का अंक भी शून्य है। उदाहरण के लिए:

सही परिणाम मिला।

2. ए सकारात्मक है, बी नकारात्मक है और ए से अधिक परिमाण में पूर्ण है।   | ए |< |B|

उदाहरण के लिए:

यदि परिणाम "1" के साथ एक ऋण चिह्न के साथ प्राप्त किया जाता है, तो परिणाम सीधे कोड में परिवर्तित किया जाना चाहिए !!!

सही परिणाम रिवर्स कोड में प्राप्त किया जाता है। प्रत्यक्ष कोड में अनुवाद करते समय, परिणाम के डिजिटल भाग के बिट्स उलटा हो जाते हैं: 1 0000111 = -7 10।

3. ए सकारात्मक है, बी नकारात्मक है और ए से पूर्ण मूल्य में कम है।   | ए | \u003e | बी |

उदाहरण के लिए:


कंप्यूटर प्रारंभ में प्राप्त गलत परिणाम (7 के बजाय 6) को सुधारता है इकाई हस्तांतरण   साइन रैंक से कम आदेश राशि तक।

4. ए और बी नकारात्मक हैं।   उदाहरण के लिए:


कंप्यूटर का प्रारंभिक गलत परिणाम (संख्या -10 10 के विपरीत कोड के बजाय संख्या -11 10 का उलटा कोड) को यूनिट को सिग्नल बिट से योग के निचले अंक में स्थानांतरित करके ठीक किया जाता है। परिणाम को प्रत्यक्ष कोड में अनुवाद करते समय, संख्या के डिजिटल भाग के बिट्स उलटा हो जाते हैं: 1 0001010 = -10 10।

जोड़ते समय, एक स्थिति उत्पन्न हो सकती है जब ऑपरेशन के परिणाम के ऊपरी बिट इसके लिए आवंटित स्मृति क्षेत्र में फिट नहीं होते हैं। इस स्थिति को बुलाया जाता है संख्या प्रारूप के अंक ग्रिड का ओवरफ़्लो।   ओवरफ्लो का पता लगाने और कंप्यूटर में किसी त्रुटि के बारे में सूचित करने के लिए विशेष उपकरण का उपयोग किया जाता है। नीचे दो संभावित अतिप्रवाह मामले हैं।

5. ए और बी सकारात्मक हैं, ए + बी का योग 2 से अधिक या बराबर है n-1 ,   जहां n संख्या प्रारूप के अंकों की संख्या है (एकल-बाइट प्रारूप के लिए, n = 8, 2 n-1 = 27 = 128)। ओवरफ़्लो विकल्प।

उदाहरण के लिए:


संख्या प्रारूप के डिजिटल भाग के सात अंक पर्याप्त नहीं   इसलिए, आठ-अंकों की राशि (162 10 = 10100010 2) को समायोजित करने के लिए योग का उच्च बिट साइन बिट में है।   यह कारण बनता है योग चिह्न और शर्तों की शर्तों का मिलानकि बिट ओवरफ्लो का सबूत है.

बाइनरी एन्कोडिंग के सिद्धांत कंप्यूटर के संचालन के सिद्धांतों में शामिल किए गए हैं: सभी डेटा को किसी भी तरह से कोडित बाइनरी संख्या के रूप में दर्शाया जाता है। डेटा पर तार्किक और अंकगणितीय संचालन करने के लिए बाइनरी संख्याओं के कोड आवश्यक हैं।

लेख "संख्या प्रणाली" में हम केवल सकारात्मक संख्या मानते हैं। अपने प्रारूप में हस्ताक्षरित द्विआधारी संख्या लिखते समय, दो फ़ील्ड प्रदान करना आवश्यक है: एक संख्या के संकेत को परिभाषित करने वाला फ़ील्ड, और एक संख्या के मॉड्यूलस को चिह्नित करने वाला फ़ील्ड। संख्या के संकेत के लिए एक विशेष साइन बिट (बाइनरी बिट) आरक्षित है। शेष अंक संख्या के मॉड्यूलस को निर्धारित करते हैं। साइन बिट को संख्या के मॉड्यूलस के बाईं ओर असाइन किया गया है, जिसमें साइन बिट के शून्य मान के अनुरूप "+" चिह्न होता है, और "-" चिह्न - एक।

कंप्यूटर के विकास के इतिहास में साइन संख्याओं का प्रतिनिधित्व करने के लिए तीन मुख्य विकल्प उपयोग किए गए:

  • प्रत्यक्ष कोड या चिह्न और मूल्य;
  • एक के अलावा रिवर्स कोड या कोड;
  • दो के अलावा अतिरिक्त कोड या कोड।

सभी तीनों कोडों में, सकारात्मक संख्याएं समान दिखती हैं। रिवर्स और अतिरिक्त कोड में नकारात्मक संख्याओं को लिखने के रूप में मतभेद केवल मॉड्यूल को एक संख्या का प्रतिनिधित्व करने के तरीके से संबंधित हैं, और कोड बिट विधि और साइन बिट का स्थान अपरिवर्तित रहता है।

प्रत्यक्ष बाइनरी संख्या कोड

प्रत्यक्ष कोड प्रतिनिधित्व प्रणाली में, संख्या में साइन कोड और संख्या का मॉड्यूलस होता है, जिनमें से दोनों को अलग से संसाधित किया जाता है।

सही अंशों के लिए प्रत्यक्ष कोड के उदाहरण:

पूर्णांक के लिए प्रत्यक्ष कोड के उदाहरण:

प्रत्यक्ष कोड में संख्याओं के प्रतिनिधित्व में एक महत्वपूर्ण कमी है - अलग-अलग संकेतों के साथ संख्याओं का औपचारिक सारांश गलत परिणाम देता है। एक उदाहरण दो संख्याओं के जोड़ है और। प्रत्यक्ष कोड में, इन संख्याओं में फॉर्म है: और। जाहिर है, परिणाम -2 होना चाहिए, जो प्रत्यक्ष कोड में 1.010 के रूप में लिखा जा सकता है। उसी समय, हमें सीधे जोड़ के साथ मिलता है

वह है, एक मूल्य जो अपेक्षित से काफी अलग है।

प्रत्यक्ष कोड में संख्याओं के सही जोड़ के लिए प्रक्रिया मौजूद है, लेकिन यह बहुत बोझिल है। प्रत्यक्ष कोड में एक और कमी है - शून्य में दो अलग-अलग प्रतिनिधित्व हैं, अर्थात्, और गणितीय रूप से समझ में नहीं आता है।

कंप्यूटर में उल्लेखनीय कमी के कारण, प्रत्यक्ष कोड का उपयोग नहीं किया जाता है, लेकिन रिवर्स और अतिरिक्त कोड।

इन कोडिंग सिस्टम में, साइन बिट और कोडिंग विधि का स्थान प्रत्यक्ष कोडिंग जैसा ही रहता है। हालांकि, साइन बिट को अब एक अलग के रूप में नहीं माना जाता है, लेकिन संख्या मॉड्यूल के अंकों के समान और उनके साथ एक संख्या का अभिन्न हिस्सा माना जाता है।

रिवर्स बाइनरी संख्या कोड

नकारात्मक द्विआधारी संख्याओं के लिए, एक व्यस्त कोड प्राप्त करने की प्रक्रिया निम्नानुसार है: एक इकाई साइन बिट में लिखी जाती है, और प्रत्यक्ष कोड के अंकों में, इकाई को शून्य और शून्य के साथ बदल दिया जाता है।

सही अंशों के लिए रिटर्न कोड के उदाहरण:

.

पूर्णांक के लिए रिवर्स कोड के उदाहरण:

.

यह देखना आसान है कि आगे और रिवर्स कोड में सकारात्मक संख्याएं समान दिखती हैं।

हालांकि व्यस्त कोड हमें विभिन्न संकेतों के साथ संख्याओं को जोड़ने और घटाने की समस्या को हल करने की अनुमति देता है, लेकिन इसमें भी कमी है। सबसे पहले, संक्षेप संख्याओं की प्रक्रिया एक दो-चरणीय प्रक्रिया है, जो इस ऑपरेशन के निष्पादन समय को बढ़ाती है। दूसरा, प्रत्यक्ष कोड में, विपरीत में - शून्य के दो प्रतिनिधित्व: और।

अतिरिक्त बाइनरी संख्या कोड

ऋणात्मक बाइनरी संख्या का अतिरिक्त कोड निम्न नियमों के अनुसार गठित होता है: प्रत्यक्ष कोड के डिजिटल अंकों में, इकाइयों को शून्य से बदल दिया जाता है, और शून्य से शून्य होते हैं, जिसके बाद निम्न को निम्न क्रम अंक में जोड़ा जाता है।

उदाहरण के लिए, संख्या पर विचार करें एक्सजो प्रत्यक्ष कोड में फॉर्म है:

फिर रिवर्स कोड के रूप में लिखा जा सकता है

.

अतिरिक्त कोड के लिए, रिवर्स कोड के निचले क्रम में 1 जोड़ें:

.

सही अंशों के लिए अतिरिक्त कोड के उदाहरण:

.

पूर्णांक के लिए अतिरिक्त कोड के उदाहरण:

.

अतिरिक्त कोड में सकारात्मक संख्याएं उसी तरह लिखी जाती हैं जैसे प्रत्यक्ष में। अतिरिक्त कोड में संख्याओं का प्रतिनिधित्व करते समय, शून्य लिखने का केवल एक ही रूप है: 0.0 ... 00, और शून्य को सकारात्मक संख्या माना जाता है, क्योंकि इसकी साइन बिट 0 है।

अधिकांश कंप्यूटरों में, नकारात्मक कोड को अतिरिक्त कोड में दर्शाया जाता है।

रिवर्स और अतिरिक्त कोड में संख्याओं का जोड़ और घटाव

घटाव संख्याओं के अतिरिक्त के रूप में किया जाता है, जिनमें से एक नकारात्मक संकेत के साथ होता है।

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

उदाहरण 1   संख्या जोड़ें   और

रिवर्स कोड का उपयोग करते समय, हमें मिलता है:

अतिरिक्त कोड का उपयोग करते समय हमें मिलता है:

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


विषय पर निबंध:

अतिरिक्त कोड (संख्या प्रतिनिधित्व)



योजना:

      परिचय
  • 1 अतिरिक्त कोड में संख्या प्रतिनिधित्व
  • 2 अतिरिक्त कोड का रूपांतरण
  • 3 दशमलव संख्या के लिए अतिरिक्त कोड
  • 4 उलटा कोड में परिवर्तित करने के लिए एल्गोरिदम का कार्यान्वयन (8-बिट संख्याओं के लिए)
    • 4.1 पास्कल
    • 4.2 सी / सी ++
  • 5 फायदे और नुकसान
    • 5.1 लाभ
    • 5.2 नुकसान
  • 6 सॉफ्टवेयर रूपांतरण उदाहरण
    • 6.1 सी # .NET / सी शैली

परिचय

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

बाइनरी संख्या के अतिरिक्त कोड (2 के अतिरिक्त) 1 को इसके अतिरिक्त के कम से कम महत्वपूर्ण अंक में 1 जोड़कर प्राप्त किया जाता है।

2 बाइनरी संख्या में जोड़ को दो की सबसे बड़ी डिग्री से संख्या घटाकर प्राप्त किए गए मान के रूप में परिभाषित किया गया है (2 एन से एन-बिट अतिरिक्त 2 तक)।


  1. एक अतिरिक्त कोड में एक संख्या का प्रतिनिधित्व

अतिरिक्त कोड में कोई संख्या लिखते समय, उच्च आदेश महत्वपूर्ण है। यदि इसका मान 0 है, तो शेष अंकों में एक सकारात्मक बाइनरी संख्या होती है जो प्रत्यक्ष कोड से मेल खाती है। यदि साइन बिट 1 है, तो शेष अंकों में एक नकारात्मक बाइनरी संख्या एक अतिरिक्त कोड में परिवर्तित होती है। संकेत में विपरीत मान प्राप्त करने के लिए, चिह्न सहित सभी अंक उलटा हो जाते हैं, और फिर परिणाम में एक जोड़ा जाता है।

बाइनरी 8-बिट संख्या एक संकेत के साथ   अतिरिक्त कोड में -128 से +127 तक की सीमा में किसी भी पूर्णांक का प्रतिनिधित्व कर सकते हैं। यदि उच्च-आदेश बिट शून्य है, तो शेष 7 अंकों में लिखा जा सकता है कि सबसे बड़ा पूर्णांक 2 7 - 1 है, जो 127 है।

दशमलव
विचार
बाइनरी प्रतिनिधित्व कोड (8 बिट्स)
सीधे अतिरिक्त
127 01111111 01111111
1 00000001 00000001
0 00000000 00000000
-0 10000000 --------
-1 10000001 11111111
-2 10000010 11111110
-3 10000011 11111101
-4 10000100 11111100
-5 10000101 11111011
-6 10000110 11111010
-7 10000111 11111001
-8 10001000 11111000
-9 10001001 11110111
-10 10001010 11110110
-11 10001011 11110101
-127 11111111 10000001
-128 -------- 10000000

सामान्य दशमलव संख्या प्रणाली के लिए एक ही विचार को लागू करते समय, यह निकल जाएगा (उदाहरण के लिए, दशमलव संख्या प्रणाली का उपयोग करके एक काल्पनिक प्रोसेसर के लिए):

10 साल की संख्या प्रणाली
  ("सामान्य" प्रविष्टि)
10 साल की संख्या प्रणाली
  अतिरिक्त कोड
... ...
13 0013
12 0012
11 0011
10 0010
9 0009
8 0008
... ...
2 0002
1 0001
0 0000
-1 9999
-2 9998
-3 9997
-4 9996
... ...
-9 9991
-10 9990
-11 9989
-12 9988
... ...

  2. अतिरिक्त कोड का रूपांतरण

एक सीधा कोड से एक अतिरिक्त संख्या में कनवर्ट करना निम्नलिखित एल्गोरिदम के अनुसार किया जाता है।

  1. यदि प्रत्यक्ष कोड में लिखी गई संख्या सकारात्मक है, तो 0 के बराबर अग्रणी (चिह्न) अंक इसमें जोड़ा जाता है, और रूपांतरण वहां समाप्त होता है;
  2. यदि प्रत्यक्ष कोड में लिखी गई संख्या ऋणात्मक है, तो संख्या के सभी अंक उलटे हुए हैं, और परिणाम में 1 जोड़ा गया है।

एक उदाहरण हम प्रत्यक्ष कोड में लिखे गए ऋणात्मक संख्या -5 को एक अतिरिक्त में बदलते हैं। संख्या -5 ले लिया मॉड्यूल का सीधा कोड:

परिणाम 1 में जोड़ें

आइए बाईं ओर एक अंक एक अंक जोड़ें।

उलटा परिवर्तन के लिए, एक ही एल्गोरिदम का उपयोग किया जाता है। अर्थात्:

हम संख्या के सभी अंकों को उलटा करते हैं, इस प्रकार एक रिवर्स कोड प्राप्त करते हैं:

परिणाम 1 में जोड़ें और अतिरिक्त कोड के साथ जोड़ने, जांचें

0101 + 1011 = 10000, पांचवां अंक फेंक दिया गया है।

  3. दशमलव संख्या के लिए अतिरिक्त कोड

दशमलव सिद्धांतों के कंप्यूटर प्रतिनिधित्व में भी वही सिद्धांत का उपयोग किया जा सकता है: प्रत्येक अंक के लिए, अंक एक्स को 9-एक्स द्वारा प्रतिस्थापित किया जाता है, और परिणामी संख्या जोड़ दी जाती है। उदाहरण के लिए, चार अंकों की संख्या -0081 का उपयोग करते समय, इसे 9919 (9919 + 0081 = 0000, पांचवां अंक बाहर फेंक दिया)।

  4. उलटा कोड में परिवर्तित करने के लिए एल्गोरिदम का कार्यान्वयन (8-बिट संख्याओं के लिए)

  4.1। पास्कल

अगर ए<0 then a:= ((not a) or 128 ) + 1 ;

  4.2। सी / सी ++

अगर (ए< 0 ) a = ( (~a) | 128 ) + 1 ;

  5. लाभ और नुकसान

  5.1। फायदे

  • एक ही रजिस्टर के रूप में संग्रहीत किया जा सकता है n-बिटी सकारात्मक संख्या, और ( n-1) हस्ताक्षरित बिट नंबर है, जो अतिरिक्त, दोनों घटाव, घटाव और बाएं शिफ्ट के संचालन कार्यों के लिए आम है।
  • बिट फ़ील्ड में संख्याओं की अधिक सुविधाजनक पैकिंग।
  • संख्या "शून्य शून्य" की अनुपस्थिति।

  5.2। कमियों

  • शुरुआती लोगों के लिए अतिरिक्त कोड स्पष्ट नहीं है।
  • जटिल प्रारूपों (जैसे फ़्लोटिंग-पॉइंट या बाइनरी-दशमलव कोड) में, अधिकांश फायदे रद्द कर दिए जाते हैं।
  • सबसे बड़ी संख्या का मॉड्यूलस सबसे छोटी संख्या के मॉड्यूलस के बराबर नहीं है। उदाहरण: 8-बाइट पूर्णांक पर हस्ताक्षर किए। अधिकतम संख्या: 127 10 == 7 एफ 16 == 01111111 2। न्यूनतम संख्या: -128 10 == 80 16, अतिरिक्त कोड == 10000000 2, अतिरिक्त कोड। तदनुसार, विपरीत किसी भी संख्या के लिए सच नहीं है। एक साइन चेंज ऑपरेशन के लिए अतिरिक्त सत्यापन की आवश्यकता हो सकती है।

  6. सॉफ्टवेयर रूपांतरण का उदाहरण

यदि किसी फ़ाइल या स्मृति के क्षेत्र से डेटा पढ़ा जा रहा है, जहां इसे बाइनरी अतिरिक्त कोड (उदाहरण के लिए, WAVE फ़ाइल) में संग्रहीत किया जाता है, तो बाइट्स को परिवर्तित करना आवश्यक हो सकता है। यदि डेटा 8 बिट्स में संग्रहीत किया जाता है, तो यह आवश्यक है कि 128-255 के मान नकारात्मक हों।

  6.1। सी # .NET / सी शैली

बाइट बी 1 = 254; // 11111110 (बाइनरी) बाइट बी 2 = 121; // 01111001 (बाइनरी) बाइट सी = 1<< (sizeof (byte ) * 8 - 1 ) ; // 2 7 की शक्ति में उठाया गया है परिणाम: 10,000,000 (बाइनरी)   बाइट बी 1 कन्वर्सन = (सी ^ बी 1) - सी; // परिणाम: -2। और वास्तव में, बाइनरी अतिरिक्त कोड।   बाइट b2Conversion = (सी ^ बी 2) - सी; // परिणाम 121 बनी हुई है, क्योंकि साइन बिट शून्य है।


यह निबंध पर आधारित है
यादृच्छिक लेख

ऊपर