8 / 37 · अवधारणा
द्विपूरक, चिह्न विस्तार और overflow
सूत्रों और प्रतिउदाहरणों से signed बिट व्याख्या और जोड़ के overflow की शर्तें अलग करें।
पाठ पढ़ना मुफ़्त है। प्रगति सेव करने के लिए नामांकन करें।
सर्वोच्च बिट का भार बदलता है
-बिट द्विपूरकद्विपूरक निश्चित चौड़ाई के बिटों में चिह्नयुक्त पूर्णांक दर्शाने की विधि। n बिट की सीमा −2^(n−1) से 2^(n−1)−1 तक है। पूर्णांक की व्याख्या इस प्रकार है।
चार-बिट 1010 unsignedunsigned बिट अनुक्रम को गैर-ऋणात्मक पूर्णांक मानने का नियम। n बिट की सीमा 0 से 2^n−1 है और वही बिट signed व्याख्या में अलग मान दे सकते हैं। विस्तार से पढ़ें में 10 और signed में −6 है। यह चिह्न बिट अलग करके बाकी को परिमाण मानने की विधि नहीं है। निश्चित चौड़ाई में बिट उलटकरनिषेध NOT संक्रिया 0 को 1 और 1 को 0 बनाती है। सूत्र के ऊपर की रेखा उसके नीचे के पूरे व्यंजक पर NOT लगाती है। विस्तार से पढ़ें 1 जोड़ने से मिलता है, लेकिन न्यूनतम का धनात्मक +8 उसी चार-बिट signed सीमा में नहीं है।
विस्तार से मान सुरक्षित रहना चाहिए
unsigned विस्तार में आगे 0 भरें, signed विस्तार में पुराना चिह्न बिट दोहराएँ। 1010 को 00001010 करने पर +10, और 11111010 करने पर −6 मिलता है। वही बिट विस्तृत करने पर भी व्याख्या अलग हो तो आवश्यक परिपथ अलग है।
logic signed [3:0] a, b;
logic signed [4:0] exact;
logic [3:0] result;
logic overflow;
assign exact = {a[3], a} + {b[3], b};
assign result = exact[3:0];
assign overflow = (a[3] == b[3]) && (result[3] != a[3]);यह उदाहरण carry इनपुट के बिना दो संकार्यों का signed जोड़ है। exact में पाँच-बिट योग रखा जाता है, फिर संकुचित परिणाम का चिह्न सही है या नहीं जाँचा जाता है।
प्रारंभिक मान 11111010 है। देखें कि unsigned 250 और signed −6 का बिट अनुक्रम समान है। b7 बदलने पर दोनों व्याख्याओं के मान विपरीत दिशाओं में बदलते हैं।
11111010 → unsigned 250 · signed -6 · hex 0xFA
carry और signed overflow अलग हैं
समान चिह्न के मान जोड़ने पर परिणाम का चिह्न बदले तो overflow है। चार बिट में का संग्रहित 1010, −6 दिखता है; का 0111, +7 दिखता है। अलग चिह्न की दो संख्याएँ जोड़ने पर इस प्रकार की सीमा-लाँघन नहीं होती।
signed और unsigned मिलाने वाले RTL व्यंजक तुलना और विस्तार के नियम उलझाते हैं। दोनों संकार्यों की चौड़ाई और signedness स्पष्ट करें; न्यूनतम, −1, 0 और अधिकतम को सीमा परीक्षण में शामिल करें।
खुद आज़माएँ
चार-बिट signed में और के संग्रहित बिट तथा overflow निकालें। का negate परिणाम भी समझाएँ।
व्याख्या पढ़ें
का निरूपण 1001 है और overflow नहीं है। 10 सीमा के बाहर है और 1010 (−6) बनकर संग्रहित होता है, इसलिए overflow है। −8 के बिट उलटकर 1 जोड़ें तो फिर 1000 बचता है, क्योंकि +8 निरूपित नहीं हो सकता। इसे सामान्य निरपेक्ष मान गणना की तरह उपयोग नहीं करें।