blue_bird Δημοσ. 8 Νοεμβρίου 2017 Δημοσ. 8 Νοεμβρίου 2017 Εστω οτι ο καταχωρητης $20 εχει την τιμη 1 και ο καταχωρητης $21 την τιμη -2 Πως στο καλο θα εκτελεσω το λογικο AND μεταξυ των δυο, δηλαδη το 1 AND -2 Εχω κολλησει με τον αρνητικο αριθμο, ο οποιος δεν καταλαβαινω πως θα μετατραπει σε δυαδικο και πως θα γινει τελικα η πραξη. Θα εκτιμουσα παρα πολυ μια επεξηγηση αν γνωριζει καποιος. Ευχαριστω.
Fubar.gr Δημοσ. 8 Νοεμβρίου 2017 Δημοσ. 8 Νοεμβρίου 2017 Εστω οτι ο καταχωρητης $20 εχει την τιμη 1 και ο καταχωρητης $21 την τιμη -2 Πως στο καλο θα εκτελεσω το λογικο AND μεταξυ των δυο, δηλαδη το 1 AND -2 Εχω κολλησει με τον αρνητικο αριθμο, ο οποιος δεν καταλαβαινω πως θα μετατραπει σε δυαδικο και πως θα γινει τελικα η πραξη. Θα εκτιμουσα παρα πολυ μια επεξηγηση αν γνωριζει καποιος. Ευχαριστω. Δέν γίνεται boolean algebra με αρνητικούς αριθμούς. Δεν γίνεται με αριθμούς γενικότερα. Τα 0 και 1 που χρησιμοποιούμε δέν είναι αριθμοί, αλλά αντιπροσωπεύουν κατάσταση, δηλαδή ναί/οχι ή on/off ή high/low Τί ακριβώς θέλεις να κάνεις?
blue_bird Δημοσ. 8 Νοεμβρίου 2017 Μέλος Δημοσ. 8 Νοεμβρίου 2017 Ευχαριστω!Αλλα περιμενε γιατι δεν σε εποιασα και ειμαι και αρχαριος.Στοaddi $21, $0, -2ο καταχωρητης $21 δεν θα παρει την τιμη -2 ;Μετα απλα θελω να εκτελεσω το λογικoand $22, $20, $21δηλαδη $22 = $20 AND $21οπου το $20 γνωριζω οτι ειναι 1 και το προβλημα ειναι το αρνητικο -2 που εχει ο $21.Οποτε, τι κανω;
Moderators Kercyn Δημοσ. 8 Νοεμβρίου 2017 Moderators Δημοσ. 8 Νοεμβρίου 2017 Η ερώτηση που πρέπει να απαντήσεις στον εαυτό σου είναι γιατί να κάνεις κάτι τέτοιο; Δηλαδή αν ξεχάσουμε mips κλπ, τι αποτέλεσμα περιμένεις να πάρεις και τι νόημα θα είχε αυτό το αποτέλεσμα;
albNik Δημοσ. 8 Νοεμβρίου 2017 Δημοσ. 8 Νοεμβρίου 2017 Οι αριθμοί (θετικοί, αρνητικοί) αναπαρίστανται με το συμπλήρωμα ως προς 1 η 2. http://www.convertforfree.com/twos-complement-calculator/ P.x 8-bit συμπλήρωμα ως προς 2. 1 <=> 00000001 -2 <=> 11111110 1 AND -2 = 00000000=0 1
blue_bird Δημοσ. 8 Νοεμβρίου 2017 Μέλος Δημοσ. 8 Νοεμβρίου 2017 thanks nik.Οποτε αν καταλαβα σωστα, κανεις το0000000111111110------------Και επειδη εχουμε AND, ισχυει οτι δινει 1 μονο οταν και τα δυο ειναι 1 (αλλιως 0), αρα ετσι βγαινει το00000000 Σωστα? Edited question: Τι βηματα πρεπει να κανουμε για να βρουμε οτι το -2 ειναι το 11111110 (χωρις calculator);
blue_bird Δημοσ. 8 Νοεμβρίου 2017 Μέλος Δημοσ. 8 Νοεμβρίου 2017 Λοιπον... το 2 ειναι το 00000010 για να βρουμε το -2, αντιστρεφουμε τα ψηφια οποτε γινεται 11111101 και μετα προσθετουμε 1 οποτε η πραξη που πρεπει να γινει ειναι το 11111101 00000001 ------------- Βαζω και αυτα σε quote για να τα βλεπω... 0 + 0 = 00 + 1 = 11 + 0 = 11 + 1 = 0 και 1 το κρατούμενο Αρα 11111101 00000001 ------------- 11111110 Εφοσον βγαινει, φανταζομαι οτι ειναι σωστος ο συλλογισμος μου, right?
blue_bird Δημοσ. 8 Νοεμβρίου 2017 Μέλος Δημοσ. 8 Νοεμβρίου 2017 Ευχαριστω πολυ. Αν εχω καποια αλλη απορια, ισως να επανελθω.
blue_bird Δημοσ. 9 Νοεμβρίου 2017 Μέλος Δημοσ. 9 Νοεμβρίου 2017 ναι, σωστά Επανεχρομαι και ευχαριστω για οποια βοηθεια εκ των προτερων. Τι πρεπει να κανω για να πολλαπλασιασω το -2 με το 4? Ουσιαστικα μιλαμε για ολισθηση, μαλλον θα το καταλαβες ηδη. Η λογικη μου, μου λεει οτι ο πολλαπλασιασμος πρεπει να μετατραπει σε προσθεση. Αλλα εχω κολλησει.
Moderators Kercyn Δημοσ. 9 Νοεμβρίου 2017 Moderators Δημοσ. 9 Νοεμβρίου 2017 Όταν πολλαπλασιάζεις με δυνάμεις του 2 μπορείς να κάνεις shift τόσο όσο και η δύναμη του 2. Το 4 πχ είναι 2², οπότε κάνεις 2 φορές shift αριστερά.
blue_bird Δημοσ. 9 Νοεμβρίου 2017 Μέλος Δημοσ. 9 Νοεμβρίου 2017 Kercyn... Δεν μπορω να καταλαβω, αλλα δεν φταις εσυ. Δυστυχως μου λειπουν βασικες γνωσεις μαθηματικων και δυσκολευομαι να κατανοησω μερικα πραγματα.Οποτε προσπαθω με "baby steps" να βγαλω ακρη. Εχω και μια [κατα πασα πιθανοτητα] τελευταια ερωτηση σε περιπτωση που καποιος μπορεσει να μου δωσει να καταλαβω πως υπολογιζουμε το -2 * 4. Ειπαμε οτι το -2 μετατρεπεται σε δυαδικο με την μεθοδο του συμπληρωματος ως προς 2.Αν θελω το -2 να το μετατρεψω σε δεκαεξαδικο, τι κανω;Γινεται απευθειας ή πρεπει να μετατραπει σε δυαδικο και απο δυαδικο σε δεκαεξαδικο;
Ilias95 Δημοσ. 9 Νοεμβρίου 2017 Δημοσ. 9 Νοεμβρίου 2017 (επεξεργασμένο) Εχω και μια [κατα πασα πιθανοτητα] τελευταια ερωτηση σε περιπτωση που καποιος μπορεσει να μου δωσει να καταλαβω πως υπολογιζουμε το -2 * 4. Σε x86 υπάρχει η MUL για unsigned integers και η IMUL για signed integers. Ψάξε αν θες πώς υλοποιούνται αυτές και λογικά θα είναι η ίδια λογική στις αντίστοιχες σε MIPS. Edit: Επειδή πιο πάνω έγραψες για shift, δες καλύτερα τις SAL, SAR για signed (υπάρχουν και οι SHL, SHR για unsigned). Γενικά τα shift instructions είναι πολύ πιο γρήγορα από τα MUL και DIV. Φαντάζομαι απλά θα κρατούν σταθερό το most significant bit και θα κάνουν shift τα υπόλοιπα, αλλά ποτέ δεν έχω τσεκάρει οπότε δες και πες μας. Edit2: Απ' ότι φαίνεται απ' το intel manual οι SAL και SHL κάνουν ακριβώς το ίδιο και απλά κάνουν όλα τα bits shift αριστερά. Στην χειρότερη έχεις overflow. Ειπαμε οτι το -2 μετατρεπεται σε δυαδικο με την μεθοδο του συμπληρωματος ως προς 2. Αν θελω το -2 να το μετατρεψω σε δεκαεξαδικο, τι κανω; Γινεται απευθειας ή πρεπει να μετατραπει σε δυαδικο και απο δυαδικο σε δεκαεξαδικο; Αν ξέρεις την δεκαδική αναπαράσταση ενός αριθμού, μπορείς όπως λες να τον αναπαραστήσεις σε δυαδικό (με two's complement εάν έτσι αναπαρίστανται οι αρνητικοί στην αρχιτεκτονική σου) και μετά σε hex. Δηλαδή εάν έχεις έναν 8 bit signed int: Decimal: -2 Binary (2's complement): 1111 1110 Hex: FE Αντίστοιχα το -126 θα ήταν 1000 0010 σε binary άρα 82 σε hex. Επεξ/σία 9 Νοεμβρίου 2017 από Ilias95
blue_bird Δημοσ. 9 Νοεμβρίου 2017 Μέλος Δημοσ. 9 Νοεμβρίου 2017 Ευχαριστω! Το -2 το ειχα κανει ηδη FE σε hex μεσω του δυαδικου. Οποτε χαιρομαι που επιβεβαιωνεις οτι το εκανα σωστα. Αυτο ηταν ευκολακι. Αυτο που μου'χει καψει τον εγκεφαλο ειναι το μαμημενο -2 και ο πολλαπλασιασμος με 4! Ουσιαστικα θελω να βρω την τιμη του καταχωρητη, πες'τον π.χ 24: $24 = $21 * 4 οπου ο $21 = -2
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα