बिट और निरूपण · 30 में पाठ 24 · लगभग 15 मिनट
चिह्न वाले बिट और बड़ा मान
NOT समझें और चिह्न मास्क से अंतर का चिह्न जाँचें।
01 / समझाएँ
विचार समझें
NOT केवल बाइट नहीं, सभी 32 बिट उलटता है: NOT 255 से −256 मिलता है। AND −2147483648 चिह्न वाला 32-बिट चिह्न बिट चुनता है। छोटे अंतर पर गैर-शून्य मास्क का अर्थ अंतर ऋणात्मक है।
a और b में बड़ा चुनने के लिए a − b निकालकर उसका चिह्न जाँचें। अंतर ऋणात्मक हो तो b, अन्यथा a चुनें। यह तरीका लिखित छोटे इनपुट दायरे तक सीमित रखें, क्योंकि बड़े गणितीय अंतर में 32-बिट परिवर्तन जानकारी खो सकता है।
02 / आज़माएँ
होते हुए देखें
−256 फिर 255 अपेक्षित हैं। ऋणात्मक फ्लैग स्थिति दिखाता है; कोई अलग ऋणात्मक-सशर्त निर्देश नहीं है।
LOAD 255
NOT
PRINT
NOT
PRINT
HALTएक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।
03 / चुनौती
इसे काम करने दें
−10,000 से 10,000 तक दो पूर्णांक पढ़ें और बड़ा छापें। घटाव तथा चिह्न वाला 32-बिट चिह्न मास्क उपयोग करें।
जाँचक संपादक के वर्तमान प्रोग्राम को हर 5 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।
INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
SUB R2
AND -2147483648
#
HALTसंकेत चाहिए?
शून्य चिह्न मास्क बताता है कि a − b गैर-ऋणात्मक है, इसलिए a कम-से-कम b है।
हल किया समाधान दिखाएँ
प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।
INPUT
COPY R0 R1
INPUT
COPY R0 R2
LOAD R1
SUB R2
AND -2147483648
JUMP_IF_ZERO first
LOAD R2
JUMP show
first: LOAD R1
show: PRINT
HALTइमोजी CPU प्रयोगशाला
इमोजी प्रोग्राम
LOAD, ADD या दूसरा निर्देश नाम लिखकर Space दबाएँ ताकि इमोजी जुड़े। Ctrl/⌘ + Enter चलाता/रोकता है; Escape रोकता है; Ctrl/⌘ + ] इंडेंट करता है। Tab फोकस बदलता है। लेबल कोलन लेते हैं। जंप शून्य-आधारित निर्देश पते लेते हैं।
निर्देश मानचित्र और ब्रेकपॉइंट (0)
ब्रेकपॉइंट निर्देश से पहले रोकते हैं। चलाएँ रुके ब्रेकपॉइंट के पार एक बार बढ़ता है; एक कदम सीधे निर्देश चलाता है। स्रोत बदलने से पुराने ब्रेकपॉइंट और मशीन स्थिति साफ़ होते हैं।
CPU रजिस्टर
- R0
- 0
- R1
- 0
- R2
- 0
- R3
- 0
- R4
- 0
- R5
- 0
- R6
- 0
- R7
- 0
स्टैक और लूप फ़्रेम
SP = 255 − डेटा गहराई − कॉल गहराई। स्टैक मेमोरी से अलग है।
डेटा स्टैक (नीचे → ऊपर)
खाली
कॉल वापसी पते (नीचे → ऊपर)
खाली
लूप फ़्रेम
खाली
आउटपुट और इनपुट
आउटपुट देखने के लिए PRINT चलाएँ।
कतार का इनपुट: खाली
मेमोरी · 256 बाइट · 0 गैर-शून्य
हर खाना पता:मान दिखाता है। R = इस कदम में पढ़ा; W = इस कदम में लिखा। जाँचने या निष्पादन से पहले मान रखने के लिए खाना चुनें। तीर कुंजियों से चलें, पंक्ति के लिए Home/End और पूरी मेमोरी के लिए Ctrl/⌘ + Home/End लें।
निष्पादन रिकॉर्ड · 0 प्रविष्टियाँ
हाल की प्रविष्टियाँ नीचे हैं। अलग पूर्ण पहले/बाद की स्थिति के लिए कोई भी शून्य-आधारित क्रमांक जाँचें।
अपनी चुनौती जाँचें
जब चाहें जाँच सकते हैं। पूर्णता दर्ज करने के लिए हर मामला पास हो।
प्रगति केवल localStorage लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।