2009-04-20 16 views
5

क्या कोई मुझे बता सकता है कि कैसे MIX में विभाजन (KnA द्वारा TAOCP से) बाइट-टू-बाइट आधार पर काम करता है?विभाजन मिक्स में कैसे काम करता है?

rA = |-| . . . .0| 

rX = |+|1235|0|3|1| 

स्मृति स्थान 1000 में |-|0|0|0|2|0| शामिल है।

जब आप गए कार्य पूरे

DIV 1000 

रजिस्टरों बन

rA = |+|0|617|?|?| 

rX = |-|0|0|0|?|1| 

अब मैं rA और rX, पर लेकिन में संकेत समझने की क्या आदेश rAX के बाइट्स भरा कर रहे हैं और जो प्रभाग हैं किया हुआ?

DIV 1000 2 से विभाजित हर बिट की ओर जाता है, तो मैं

rAX = |+|617|0|1|0|-|0|1|0|1|1| 

जिसमें rA विभाजन के परिणाम और rX शेष (दाईं ओर से भरा) शामिल हैं उम्मीद करेंगे।

मैं यहां कुछ खो रहा हूं, और Knuth लगता है कि मुझे इसे स्वयं समझने में सक्षम होना चाहिए (इसलिए इसके बारे में स्तर 10 प्रश्न, जो मुझे भी नहीं मिलता है), लेकिन क्या कोई मेरी मदद कर सकता है यहाँ?

उत्तर

3

तो मैंने इसे स्वयं समझ लिया।

यदि आप बाइट्स को एक ही नंबर में परिवर्तित करके हाथ से विभाजन करते हैं तो आपको -210,501,825 मिलेगा (यदि आप छोटे प्रकार के बाइट का उपयोग कर रहे हैं - जो कि Knuths पुस्तक में 6 बिट्स (!) है)। इसे -128 द्वारा विभाजित करें, जो उसी बाइटसाइट का उपयोग करके स्थान 1000 में मूल्य है।

उद्धरण 1644545 है, शेष 65, संकेत पोस्टिव होगा क्योंकि दोनों संख्याएं नकारात्मक हैं। यदि आप RX में आरए में 1644545 और 65 स्टोर, आप

|+|0|6|17|32|01| 
|-|0|0|0|1|1| 

मिल जाएगा सबसे छोटी bytesize (जो 64 नंबर रखती है) का उपयोग कर। चूंकि Knuth अपने उदाहरणों में एक विशेष बाइटसाइट को कभी नहीं मानता है, इसलिए आरएक्स में कई प्रश्न चिह्न हैं। आरएक्स का संकेत हमेशा आरए का पिछला संकेत है।

संपादित करें: मैंने MIX के रजिस्टरों के साथ खेलने के लिए बहुत आसान MixEmul उपयोगिता का उपयोग किया। यह .NET

में किया गया एक बहुत अच्छा मिक्स कार्यान्वयन है
संबंधित मुद्दे