Ισχυει αυτο για την CPU?

Ας χαλαρώσουμε και λίγο... Aς κουτσομπολέψουμε μια σταλιά, ας πούμε και κανένα ανέκδοτο!

Συντονιστές: theiapythia, Super-Moderators

Απάντηση
Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από xultimatex » 14 Οκτ 2011 19:59

Συγνώμη το έγραψα πολύ βιαστικά. Ήθελα να πω με XOR. :oops:
Και φυσικά για να έχουμε και το κρατούμενο χρειάζεται AND. Πέρα απο τη λεπτομέρεια όμως ήθελα να πω ότι λογικά γίνεται η πρόσθεση. Δεν υπάρχει το "αριθμητικά".
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από cherouvim » 14 Οκτ 2011 20:10

xultimatex έγραψε:Όταν έισαι σε δυαδικό σύστημα η αριθμητική πρόσθεση γίνεται με το λογικό AND.
Πως;
xultimatex έγραψε:Συγνώμη το έγραψα πολύ βιαστικά. Ήθελα να πω με XOR.
ΟΚ. Πως γίνεται με XOR;

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από xultimatex » 14 Οκτ 2011 20:39

Ο πίνακας αληθείας της xor είναι αυτός:

Κώδικας: Επιλογή όλων

A   B 	OUTPUT
0 	0 	0
0 	1 	1
1 	0 	1
1 	1 	0
Φαίνεται ότι το output είναι το άθροισμα των A και B. Άρα πραγματοποιεί πρόσθεση. Μόνο στην τελευταία περίπτωση χρειάζεται να γίνει ένα το κρατούμενο γιαυτό έχουμε την AND να το παράγει. (Όταν δηλαδή και τα 2 είναι λογικό 1).

Τελικά αυτό το κύκλωμα
http://en.wikipedia.org/wiki/File:Half_Adder.svg
είναι ένας αθροιστής.

Αυτός είναι η βάση, και για 64 bit λέξης μπορει να έχεις 64 τέτοιους συνδεδεμένους κατάλληλα. Ή μπορείς να έχεις μπροστά και πίσω buffer και να κάνεις διαδοχικά τις προσθέσεις...
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από cherouvim » 14 Οκτ 2011 20:48

Πως μπορείς προγραμματιστικά να κάνεις πρόσθεση με AND και XOR; Έχεις ένα παράδειγμα;

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από xultimatex » 14 Οκτ 2011 21:05

Με bitwise operators στην c δεν έχω ασχοληθεί για να σου γάψω κώδικα στα γρήγορα. Εκανα όμως ένα google search και βρήκα κάποια προγράμματα.

Αυτό που λεω εγώ όμως είναι ότι παρόμοιο κύκλωμα με αυτό που έδωσα έχει ο επεξεργαστής, που το χρησιμοποιείς με την εντολή ADD σε assembly, που τη χρησιμοποιεί ο compiler της c όταν κάνει 3+4. Αντίθετα, αν ο επεξεργαστής είναι γενικής χρήσης και δεν έχει κύκλωμα για διαίρεση θα πρέπει να χρησιμοποιήεις τα κυκλώματα της πρόσθεσης και της αφαίρεσης για να φτάσεις στη διαίρεση. Όλα "λογικά".

Αυτά που είπα είναι low level και έχουν μεγάλη διαφορά και σε υλοποιήση και σε αρχές από τα high level.
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από cherouvim » 15 Οκτ 2011 11:03

Δεν μίλησε κανείς για C (τα operators αυτά υπάρχουν σε όλες τις γλώσσες) ούτε για διαίρεση ούτε για το ADD της assembly ούτε για high level vs low level ούτε για compilers.

Θα πεις πως γίνεται η πρόσθεση με AND, XOR (ή AND και XOR μαζί) ή μήπως τελικά δεν αρκούνε μόνο αυτά;

Απάντα συγκεκριμένα γιατί τέτοια πράγματα δεν χωράνε σάλτσες ;)

Άβαταρ μέλους
xultimatex
Honorary Member
Δημοσιεύσεις: 2505
Εγγραφή: 26 Ιούλ 2003 13:02
Τοποθεσία: Ξάνθη
Επικοινωνία:

Ισχυει αυτο για την CPU?

Δημοσίευση από xultimatex » 15 Οκτ 2011 14:57

Ο πίνακας αληθείας και το κύκλωμα που έδωσα είναι υπεραρκετά για να δικαιολογήσουν πως γράφεται ένα κύκλωμα για πρόσθεση στο hardware. Αφού το θέμα είναι για επεξεργαστές, αυτή είναι η απάντηση.

a xor b -> το άθροισμα των 2 bit
a and b -> το κρατούμενο που θα προστεθεί στο επόμενο ζευγάρι των πιο σηματνικών bits.

Εσύ μου ζήτησες να σου δώσω προγραμματιστικό παράδειγμα. Άντε και στο δίνω το πρόγραμμα. Θα έχει σίγουρα βρόχο(για πάνω απο ένα bit), κάτι που δεν υπαρχει στο hardware. Και αυτές είναι οι διαφορετικές αρχές που ανέφερα. Τίποτα απο αυτά που είπα δεν είναι σάλτσες, έσύ με ρωτάς κάτι άσχετο και προσπαθώ να ξαναγυρίσω στο θέμα.
Και τελος πάντων αν έχεις να πεις κάτι σχετικό μπορείς να το πεις αμέσως και να μην με αφήνεις να υποθέτω τί θέλεις και ξαναγράφω τα ίδια. :wink:
:arrow: Αν προσπαθείς πολύ για να πετύχεις κάτι, ίσως το κάνεις με λάθος τρόπο...

Απάντηση

Επιστροφή στο “Χαλαρά κι Ανάλαφρα”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 3 επισκέπτες