← सभी पाठ

बिट और निरूपण · 30 में पाठ 23 · लगभग 12 मिनट

बिट पलटना

XOR का उलटने योग्य बदलाव संग्रहित सेटिंग पर लागू करें।

01 / समझाएँ

विचार समझें

मास्क बिट एक हो तो XOR बिट पलटता है, शून्य हो तो बनाए रखता है। XOR 6 बिट 1 और 2 पलटता है। वही मास्क दो बार लगाने पर मूल मान लौटता है।

उलटने योग्य क्रिया अपरिवर्तनीय शर्त से जाँची जा सकती है: दो बार पलटने के बाद सेटिंग शुरुआती मान के बराबर है। प्रोग्राम में R0 बदलने पर भी मेमोरी यह दिखाती है।

02 / आज़माएँ

होते हुए देखें

44 फिर 42 अपेक्षित है। बदले और लौटे बिट की तुलना करें।

LOAD 42
XOR 6
PRINT
XOR 6
PRINT
HALT

एक समय में एक निर्देश के लिए एक कदम लें। उदाहरण बदलकर फिर चला सकते हैं।

03 / चुनौती

इसे काम करने दें

एक बाइट पढ़ें। बिट 1 और 2 पलटें, बदली बाइट पता 20 पर रखें और वापस पढ़कर छापें। फिर वही बिट पलटें, बहाल बाइट पता 20 पर रखें और बहाल मान छापें।

जाँचक संपादक के वर्तमान प्रोग्राम को हर 3 मामले के लिए नई मशीन में चलाता है। वह इनपुट और मेमोरी खुद देता है; प्रयोगशाला का वर्तमान आउटपुट और मेमोरी परिणाम तय नहीं करते।

INPUT
XOR 6
STORE 20
LOAD [20]
PRINT
#
HALT
संकेत चाहिए?

दोनों बार XOR 6 लें; अंतिम मेमोरी बाइट मूल इनपुट के बराबर हो।

हल किया समाधान दिखाएँ

प्रोग्राम पढ़ें, हर निर्देश का असर अनुमान करें, फिर प्रयोगशाला में एक-एक कदम चलाएँ।

INPUT
XOR 6
STORE 20
LOAD [20]
PRINT
XOR 6
STORE 20
LOAD [20]
PRINT
HALT

इमोजी CPU प्रयोगशाला

तैयार · 0 चक्र

इमोजी प्रोग्राम

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
    प्रोग्राम काउंटर (PC)
    0
    स्टैक संकेतक (SP)
    255
    फ्लैग
    शून्य: निष्क्रिय · ऋणात्मक: निष्क्रिय · ओवरफ़्लो: निष्क्रिय
    विलंब अनुरोध
    0 ms
    स्टैक और लूप फ़्रेम

    SP = 255 − डेटा गहराई − कॉल गहराई। स्टैक मेमोरी से अलग है।

    डेटा स्टैक (नीचे → ऊपर)

    खाली

    कॉल वापसी पते (नीचे → ऊपर)

    खाली

    लूप फ़्रेम

    खाली

    आउटपुट और इनपुट

    आउटपुट देखने के लिए PRINT चलाएँ।

    कतार का इनपुट: खाली

    मेमोरी · 256 बाइट · 0 गैर-शून्य

    हर खाना पता:मान दिखाता है। R = इस कदम में पढ़ा; W = इस कदम में लिखा। जाँचने या निष्पादन से पहले मान रखने के लिए खाना चुनें। तीर कुंजियों से चलें, पंक्ति के लिए Home/End और पूरी मेमोरी के लिए Ctrl/⌘ + Home/End लें।

    मेमोरी मान रखने से पहले रीसेट करें। संग्रहित मान 0–255 में लपेटते हैं।
    निष्पादन रिकॉर्ड · 0 प्रविष्टियाँ

    हाल की प्रविष्टियाँ नीचे हैं। अलग पूर्ण पहले/बाद की स्थिति के लिए कोई भी शून्य-आधारित क्रमांक जाँचें।

    अपनी चुनौती जाँचें

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

    प्रगति केवल localStorage लेती है। इस ब्राउज़र में रहती है और सर्वर पर नहीं जाती।