Προς το περιεχόμενο

Πράξεις αριθμών στο δυαδικό


spyros83

Προτεινόμενες αναρτήσεις

Δημοσ.

Παιδιά αν έχω την πράξη : πρόσθεση ανάμεσα σε δύο εκτελεστέους 2 και 3 ποιά είναι η τιμή των παρακάτω σημαιών :

 


  1.  
  2. Κρατουμένου
  3. Μηδενός
  4. Υπερχείλισης
  5. Προσήμου

 

Τα αποτελέσματα ξέρω ποια είναι αλλά θα ήθελα να μάθω τον τρόπο που βγαίνουν αν θέλει κάποιος να μου πει κάπως αναλυτικά ... ?

Δημοσ.

Παιδιά αν έχω την πράξη : πρόσθεση ανάμεσα σε δύο εκτελεστέους 2 και 3 ποιά είναι η τιμή των παρακάτω σημαιών :

 


  1.  
  2. Κρατουμένου
  3. Μηδενός
  4. Υπερχείλισης
  5. Προσήμου

 

Τα αποτελέσματα ξέρω ποια είναι αλλά θα ήθελα να μάθω τον τρόπο που βγαίνουν αν θέλει κάποιος να μου πει κάπως αναλυτικά ... ?

Οι πράξεις γίνονται ακριβώς όπως τις μάθαμε στο δημοτικό. Η διαφορά είναι το μέγιστο στο οποίο φτάνουν τα νούμερα.

Δηλαδή:

Βάζουμε τα νούμερα το ένα κάτω από το άλλο

_10

+11

---

 

Πάμε από δεξιά προς τα αριστερά και προσθέτουμε κάθετα τα νούμερα (μέγιστο στο δυαδικό είναι το 1 και όχι το 9 όπως το δεκαδικό):

1 + 0 = 1

1 + 1 = 0 και ένα το κρατούμενο

Και μας μένει ένα κρατούμενο που το βάζουμε αριστερά. Άρα το αποτέλεσμα είναι:

 

_10

+11

---

101

 

Για τις σημαίες πρέπει να δεις πως διαχειρίζονται και με το παραπάνω θα καταλάβεις αμέσως τις τιμές τους.

Δημοσ.

Υπερχείλιση πότε συμβαίνει?

Συνήθως, όταν το most significant bit του αποτελέσματος αλλάζει τιμή (από 0 γίνεται 1 ή το αντίστροφο). Αλλά εξαρτάται και από το ποια ακριβώς αναπαράσταση χρησιμοποιείται για τους αριθμούς στην κάθε υλοποίηση.

 

Για περισσότερα, ρίξε μια ματιά εδώ: http://en.wikipedia.org/wiki/Overflow_flag

Δημοσ.

Υπερχείλιση πότε συμβαίνει?

 

 

Όταν δεν χωράει άλλο και ξεχειλήσει.. υπερχειλίσει δηλαδή.

 

Τι σημαίνει ότι δεν χωράει άλλο....

 

Ένα απλοποιημένο παράδειγμα.

 

Καταρχάς μιλάμε για δυαδικό σύστημα. Δηλαδή, με 0 και 1 μόνο. Επίσης, δεν μιλάμε για "χαρτί και μολύβι" αλλά για υπολογιστές. Άρα, τα πόσα 0 και 1 έχουμε είναι προκαθορισμένο. Δεν μπορούμε να έχουμε άπειρα δηλαδή.

 

 

Όπως σου είπαν πιο πάνω, όταν στο 0 προσθέσεις 1 τότε γίνεται 1. Όταν στο 1 προσθέσεις 1 τότε γίνεται 0 και το επόμενο ψηφίο γίνεται 1 (όπως πας από το 09 στο 10 δηλαδή). Π.χ., 01 + 01 = 10.

 

Φαντάσου ότι έχουμε μόνο 2 δυαδικό ψηφία. Έτσι, στο προηγούμενο παράδειγμα είμαστε ΟΚ. Δηλαδή, δεν υπάρχει κανένα πρόβλημα για την πράξη: 01 + 01. Επίσης, η πράξη αυτή μας δίνει αποτέλεσμα 10, δηλαδή 01 + 01 = 10.

 

Το ίδιο συμβαίνει εάν στο 10 προσθέσουμε το 01. Θα έχουμε 10 + 01 = 11. Τι γίνεται όμως εάν στο 11 προσθέσουμε το 01;

 

Εάν είχαμε τρία ψηφία, θα είχαμε το αποτέλεσμα 100. Επειδή όμως δεν έχουμε, και έχουμε μόνο δύο, το τρίτο δεν μπορούμε να το έχουμε, κυριολεκτικά. Έτσι, απομένει μόνο το 00.

 

Εάν βάλεις τους αριθμούς στο δεκαδικό, έχουμε

 

00 = 0

01 = 1

10 = 2

11 = 3

100 = 4

 

Δηλαδή:

 

01 + 01 = 10, στο δεκαδικό 1 + 1 = 2

10 + 01 = 11, στο δεκαδικό 2 + 1 = 3

11 + 01 = 100, στο δεκαδικό 3 + 1 = 4, που όμως γίνεται

11 + 01 = 0, στο δεκαδικό 3 + 1 = 0.

 

Όμως, επειδή από το 3 αντί να πας παρακάτω γυρνάς πάλι στην αρχή, το "ποτήρι" με της χωρητικότητα σε αριθμούς ξεχείλησε... υπερχείλισε.

 

 

επειδή όμως, πρακτικά, υπάρχει και ένα ψηφίο (συνήθως το πιο αριστερό) που δείχνει το πρόσημο... όταν αλλάξει αυτό, οι αριθμοί γίνονται αρνητικοί από θετικοί ή το αντίστροφο. Έτσι, εάν το εύρος των αριθμών σου είναι από -3 έως 3, εάν στο 3 προσθέσεις 1 θα πας στο -3... θα έχει ξεχειλίσει πάλι το ποτήρι.. θα έχεις υπερχείλιση.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...