Κεφάλαιο 1.3 - 1.3.2 Ακέραιοι αριθμοί (integers)
Κεφάλαιο 1.3 - 1.3.2 Ακέραιοι αριθμοί (integers)
1.3.2 Ακέραιοι αριθμοί (integers)
Είναι ο τύπος δεδομένων που αποτελείται από αριθμούς χωρίς υποδιαστολή και μπορεί να είναι θετικός ή αρνητικός αριθμός ή μηδέν. Οι αριθμοί αυτοί αποθηκεύονται στον υπολογιστή σε δυαδική μορφή και μπορούμε να εκτελέσουμε σε αυτούς όλες τις πράξεις στο δυαδικό σύστημα αρίθμησης.
Δυαδική πρόσθεση
Γίνεται όπως και με την πρόσθεση στο δεκαδικό σύστημα. Η διαφορά είναι ότι έχουμε κρατούμενο όταν συμπληρωθεί μία δυάδα και όχι όταν συμπληρωθεί μία δεκάδα. Υπάρχουν όμως οι εξής κανόνες:
0+1 =1
1+0 =1
0+0= 0
1+1= 0 και κρατούμενο σε μεταφορά 1
Παραδείγματα πρόσθεσης δυαδικών αριθμών
Στο προηγούμενο παράδειγμα παρατηρούμε ότι στην περίπτωση πρόσθεσης τριών μονάδων, το αποτέλεσμα λαμβάνεται προσθέτοντας τις δύο πρώτες και έπειτα προσθέτοντας το αποτέλεσμα που προκύπτει µε την τρίτη.
Δυαδική αφαίρεση
Η αφαίρεση των δυαδικών αριθμών ακολουθεί τους παρακάτω κανόνες:
0 - 0 = 0
1
- 0 = 1
1
- 1 = 0
10 - 1 = 1 ← με δανεισμό από την
ανώτερη τάξη.
Ο τέταρτος κανόνας μπορεί να γίνει κατανοητός αν σκεφτεί κανείς τη δεκαδική αφαίρεση. Αν ο μειωτέος είναι μικρότερος από τον αφαιρετέο, δανειζόμαστε µία δεκάδα και εκτελούμε την αφαίρεση. Όμοια, στο δυαδικό σύστημα, για να αφαιρέσουμε 1 από 0, δανειζόμαστε µία δυάδα (θυμηθείτε ότι η βάση του συστήματος είναι το 2) και αφαιρούμε 1 από 2. Το αποτέλεσμα είναι 1 και µία δανειζόμενη μονάδα μεταφέρεται στην επόμενη θέση αριστερά.
Για δυαδικό αριθμό με δύο ή περισσότερα ψηφία, η αφαίρεση πραγματοποιείται στήλη ανά στήλη όπως στην αφαίρεση δεκαδικών ψηφίων. Επίσης, μερικές φορές κάποιος πρέπει να δανειστεί από την επόμενη ανώτερη στήλη.
Παραδείγματα αφαίρεσης δυαδικών αριθμών
Η παραπάνω αφαίρεση πραγματοποιείται με τα ακόλουθα βήματα:
0 - 0 = 0
Για το 0 - 1 = 1, λαμβάνοντας δανεισμό από την ανώτερη στήλη το 0 γίνεται 10 και στη συνέχεια 10 - 1 = 1
Για το 1 - 0, δεδομένου ότι έχει ήδη δοθεί το 1, γίνεται 0 - 0 = 0
1 - 1 = 0
Στην αφαίρεση δύο θετικών αριθμών το αποτέλεσμα θα μπορούσε να ήταν αρνητικό αν ο μειωτέος ήταν μικρότερος από τον αφαιρετέο. Συνεπώς υπάρχει η ανάγκη ορισμού θετικών και αρνητικών δυαδικών αριθμών.
Υπερχείλιση
Έχουμε συνηθίσει στην καθημερινή μας ζωή να κάνουμε πράξεις με δεκαδικούς αριθμούς χωρίς ποτέ να σκεφτόμαστε τον αριθμό των ψηφίων που μας είναι διαθέσιμα. Ωστόσο σε ένα υπολογιστικό σύστημα ο αριθμός των διαθέσιμων δυαδικών ψηφίων που καταλαμβάνει ένας αριθμός είναι πεπερασμένος.
Ας υποθέσουμε ότι στο δεκαδικό σύστημα υπήρχε περιορισμός των παραστάσεων των αριθμών στο ένα δεκαδικό ψηφίο. Διαπιστώνουμε τότε ότι η πράξη 8+6=14 δεν μπορεί να εκτελεστεί γιατί το αποτέλεσμα χρειάζεται δύο ψηφία για να παρασταθεί.
Εάν ο μέγιστος αριθμός ψηφίων είναι n και το αποτέλεσμα μιας πράξης χρειάζεται n+1 ψηφία για να παρασταθεί τότε έχουμε υπερχείλιση.
Έστω ότι θέλουμε να προσθέσουμε δύο δυαδικούς αριθμούς των τεσσάρων bits:
Το αποτέλεσμα (10001)2 έχει μήκος πέντε bits αν και οι είσοδοι μας είχαν μόνο 4 bits. Παρόλο που η απάντηση είναι σωστή δεν μπορούμε να χρησιμοποιήσουμε το αποτέλεσμα αυτό. Άρα, όταν το κρατούμενο είναι 1, τότε έχουμε υπερχείλιση στην πρόσθεση. Σε αυτή την περίπτωση το bit που βρίσκεται στην 5η θέση αγνοείται και έτσι τα υπόλοιπα bits αναπαριστούν λάθος αποτέλεσμα, δηλαδή 0001 αντί του 10001.
Συνεπώς θα πρέπει πάντα να λαμβάνουμε υπόψη το εύρος των δυνατών παραστάσεων και να ελέγχουμε για τυχόν καταστάσεις υπερχείλισης.
Το πρόβλημα της υπερχείλισης παρατηρείται στην πρόσθεση όταν το κρατούμενο είναι 1. Στην αφαίρεση δεν υπάρχει υπερχείλιση γιατί το αποτέλεσμα είναι πάντα ίσο ή μικρότερο από τον πιο μεγάλο των 2 αριθμών.