Πέμπτη, 16 Οκτωβρίου 2008

Βασικές πράξεις στον υπολογιστή

1.0 Εισαγωγή

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

Ποιές πράξεις γνωρίζουμε ότι μπορούμε να κάνουμε με δυό αριθμούς χ και ψ;
Απάντηση : Πρόσθεση χ+ψ, Αφαίρεση χ-ψ ή ψ-χ, Πολλαπλασιασμό χ*ψ, Διαίρεση χ/ψ ή ψ/χ, Ύψωση σε δύναμη χ^ψ ή ψ^χ, Εύρεση λογάριθμου του χ με βάση το ψ ή ...

Καλά, φτάνει! Έπρεπε να ρωτήσω ποιές απλές αριθμητικές πράξεις μπορούμε να κάνουμε με το ζεύγος αριθμών {χ, ψ} χωρίς να τους αλλάζουμε σειρά;
Απάντηση : Πρόσθεση χ+ψ, Αφαίρεση χ-ψ, Πολλαπλασιασμό χ*ψ, Διαίρεση χ/ψ (αν το ψ δεν είναι μηδενικό).

Ωραία, τέσσερις πράξεις.
Αν το ψάξουμε λίγο περισσότερο όμως, θα μάθουμε ότι τα κυκλώματα των υπολογιστών δεν γνωρίζουν πώς να εκτελέσουν αυτές τις πράξεις. Οι μόνες πράξεις που γίνονται από το κύκλωμα πράξεων του υπολογιστή είναι :
(α) Εύρεση συμπληρώματος ενός δυαδικού αριθμού. (Τα συμπληρώματα είναι μία μέθοδος για να μπορούμε να έχουμε αρνητικούς αριθμούς).
(β) Ολίσθηση ενός δυαδικού αριθμού κατά μία θέση αριστερά (ισοδυναμεί με πολλαπλασιασμό του αριθμού με την βάση 2) ή κατά μία θέση δεξιά (ισοδυναμεί με διαίρεση του αριθμού με την βάση 2).
(γ) Πρόσθεση δύο δυαδικών αριθμών.

Από τις τέσσερις πράξεις, ο υπολογιστής έχει κύκλωμα μόνο για πρόσθεση!

2.0 Συμπληρώματα

Ας υποθέσουμε ότι η λέξη του υπολογιστή μας για αποθήκευση αριθμών έχει τρία μόνο δυαδικά ψηφία. Μπορούμε λοιπόν να αποθηκεύσουμε εκεί 8 διαφορετικές δυαδικές τριάδες ψηφίων :
[ 000 ], [ 001 ], [ 010 ], [ 011 ], [ 100 ], [ 101 ], [ 110 ], [ 111 ].

Αν τους θεωρήσουμε όλους θετικούς, θα είναι οι αριθμοί από το [0] μέχρι το [7]. Επειδή χρειαζόμαστε και αρνητικούς αριθμούς, θα επιχειρήσουμε κάποια σύμβαση, θεωρώντας το αριστερό ψηφίο ως πρόσημο (0 οι θετικοί, 1 οι αρνητικοί).

Θα δούμε ότι ο υπολογιστής κάνει αφαίρεση προσθέτοντας το συμπλήρωμα (θα το ορίσω παρακάτω) ενός αριθμού.

2.1 Σύστημα [Πρόσημο και μέγεθος]

Πρώτο ψηφίο είναι το πρόσημο, τα υπόλοιπα είναι το μέγεθος. Οι οκτώ τριάδες αντιστοιχούν στους εξής αριθμούς :
[000 +0], [001 +1], [010 +2], [011 +3], [100 -0], [101 -1], [110 -2], [111 -3].
Μεγαλύτερο μέγεθος είναι το +3, μικρότερο είναι το -3 και υπάρχουν δύο διαφορετικά μηδενικά +0 και -0. Οι πράξεις δεν είναι εύκολες.

2.2 Σύστημα [Συμπλήρωμα του 1]

Το συμπλήρωμα ενός δυαδικού ψηφίου ως προς 1 είναι η ποσότητα που απομένει για να γίνει 1. Άρα συμπλήρωμα του [0] είναι το [1] και συμπλήρωμα του [1] είναι το [0].
(Παίρνω το +1 που είναι το 001, το αλλάζω 110, και αυτό είναι το -1).

Με το αριστερό ψηφίο πρόσημο, οι οκτώ τριάδες αντιστοιχούν στους εξής αριθμούς :
[000 +0], [001 +1], [010 +2], [011 +3], [100 -3], [101 -2], [110 -1], [111 -0].
Μεγαλύτερο μέγεθος είναι το +3, μικρότερο είναι το -3 και υπάρχουν δύο διαφορετικά μηδενικά +0 και -0.

Ας προσθέσουμε το +2 με το -2 :
__010
__101 +
__---
__111 (Αυτό είναι το -0. Σωστό αποτέλεσμα).

Ας προσθέσουμε το +2 με το -1 :
__010
__110 +
__---
1 000 (Αν βγεί αριστερά κρατούμενο, προστίθεται στην θέση 1)
___1 +
__---
__001 (Αυτό είναι το +1. Σωστό αποτέλεσμα).

Υπάρχουν μερικές περιπτώσεις που είναι λάθος το αποτέλεσμα (επειδή δεν μπορεί να χωρέσει στην μικρή λέξη του υπολογιστή), αλλά υπάρχει εύκολος τρόπος να το ελέγξει ο υπολογιστής.
Αν προσθέσει θετικό με θετικό και βγεί αρνητικό αποτέλεσμα, είναι λάθος :
[ 001 +1 ] + [ 011 +3 ] (δεν χωράει το 4) δίνει [ 100 -3 ]
[ 010 +2 ] + [ 010 +2 ] (δεν χωράει το 4) δίνει [ 100 -3 ]
[ 010 +2 ] + [ 011 +3 ] (δεν χωράει το 5) δίνει [ 101 -2 ]
[ 011 +3 ] + [ 011 +3 ] (δεν χωράει το 6) δίνει [ 110 -1 ]

Αν προσθέσει αρνητικό με αρνητικό και βγεί θετικό αποτέλεσμα, είναι λάθος :
[ 100 -3 ] + [ 100 -3 ] (δεν χωράει το -6) δίνει [ 1 000 ] δίνει [ 001 +1 ]
[ 100 -3 ] + [ 101 -2 ] (δεν χωράει το -5) δίνει [ 1 001 ] δίνει [ 010 +2 ]
[ 100 -3 ] + [ 110 -1 ] (δεν χωράει το -4) δίνει [ 1 010 ] δίνει [ 011 +3 ]
[ 101 -2 ] + [ 101 -2 ] (δεν χωράει το -4) δίνει [ 1 010 ] δίνει [ 011 +3 ]

Ο υπολογιστής στο σύστημα [Συμπλήρωμα του 1] κάνει μόνο σωστές πράξεις (αφού έχει τρόπο να αποκλείει τις λαθεμένες) αλλά μας ενοχλούν τα δύο μηδενικά. Αν κάποια μεταβλητή έχει τιμή [ 111 -0 ] και κάποια άλλη έχει τιμή [ 000 +0 ], όταν θα τις συγκρίνει ο υπολογιστής θα τις βρει διαφορετικές!

2.3 Σύστημα Συμπλήρωμα του 2

Για να σχηματίσουμε το συμπλήρωμα ενός αριθμού εδώ, βρίσκουμε το συμπλήρωμά του ως προς 1 (αλλάζουμε τα [1] σε [0] και τα [0] σε [1]) και μετά του προσθέτουμε μια μονάδα.
(Παίρνω το +1 που είναι το 001, το αλλάζω 110, του προσθέτω 1 και γίνεται 111, και αυτό είναι το -1).
Με το αριστερό ψηφίο πρόσημο, οι οκτώ τριάδες αντιστοιχούν στους εξής αριθμούς :
[000 +0], [001 +1], [010 +2], [011 +3], [100 -4], [101 -3], [110 -2], [111 -1].
Μεγαλύτερο μέγεθος είναι το +3, μικρότερο είναι το -4 και υπάρχει μόνο το +0.

Ας προσθέσουμε το +2 με το -2 :
__010
__110 +
__---
1_000 (Το κρατούμενο αριστερά χάνεται).
__000 (Αυτό είναι το +0. Σωστό αποτέλεσμα).

Ας προσθέσουμε το +2 με το -1 :
__010
__111 +
__---
1_001 (Το κρατούμενο αριστερά χάνεται).
__001 (Αυτό είναι το +1. Σωστό αποτέλεσμα).

Υπάρχουν μερικές περιπτώσεις που είναι λάθος το αποτέλεσμα (επειδή δεν μπορεί να χωρέσει στην μικρή λέξη του υπολογιστή), αλλά υπάρχει εύκολος τρόπος να το ελέγξει ο υπολογιστής.
Αν προσθέσει θετικό με θετικό και βγεί αρνητικό αποτέλεσμα, είναι λάθος :
[ 001 +1 ] + [ 011 +3 ] (δεν χωράει το 4) δίνει [ 100 -4 ]
[ 010 +2 ] + [ 010 +2 ] (δεν χωράει το 4) δίνει [ 100 -4 ]
[ 010 +2 ] + [ 011 +3 ] (δεν χωράει το 5) δίνει [ 101 -3 ]
[ 011 +3 ] + [ 011 +3 ] (δεν χωράει το 6) δίνει [ 110 -2 ]

Αν προσθέσει αρνητικό με αρνητικό και βγεί θετικό αποτέλεσμα, είναι λάθος :
[ 100 -4 ] + [ 100 -4 ] (δεν χωράει το -8) δίνει [ 1 000 ] δίνει [ 000 +0 ]
[ 100 -4 ] + [ 101 -3 ] (δεν χωράει το -7) δίνει [ 1 001 ] δίνει [ 001 +1 ]
[ 100 -4 ] + [ 110 -2 ] (δεν χωράει το -6) δίνει [ 1 010 ] δίνει [ 010 +2 ]
[ 100 -4 ] + [ 111 -1 ] (δεν χωράει το -5) δίνει [ 1 011 ] δίνει [ 011 +3 ]
[ 101 -3 ] + [ 101 -3 ] (δεν χωράει το -6) δίνει [ 1 010 ] δίνει [ 010 +2 ]
[ 101 -3 ] + [ 110 -2 ] (δεν χωράει το -5) δίνει [ 1 011 ] δίνει [ 011 +3 ]

Ο υπολογιστής στο [Συμπλήρωμα του 2] κάνει μόνο σωστές πράξεις (αφού έχει τρόπο να αποκλείει τις λαθεμένες). Έχει μόνο ένα μηδενικό, το +0, οπότε δεν υπάρχουν ασάφειες. Επειδή παραλείπει τα κρατούμενα, η διαδικασία είναι ελαφρώς ταχύτερη, γιαυτό οι περισσότεροι σύγχρονοι υπολογιστές αναπαριστούν τους αρνητικούς αριθμούς με το Σύστημα [Συμπλήρωμα του 2].

3.0 Ολισθήσεις

Έχουμε τον αριθμό 4510 (σαρανταπέντε στο δεκαδικό σύστημα). Αν ολισθήσει μια θέση αριστερά, γίνεται 45010 (τετρακόσια πενήντα στο δεκαδικό σύστημα). Ο αριθμός πολλαπλασιάστηκε με το 10. Σωστότερο είναι να πούμε ότι πολλαπλασιάστηκε με την βάση 10 του αριθμητικού συστήματος.

Έχουμε τον αριθμό 112 (τρία στο δυαδικό σύστημα). Αν ολισθήσει μια θέση αριστερά, γίνεται 1102 (έξι στο δυαδικό σύστημα). Ο αριθμός πολλαπλασιάστηκε με το 2. Βεβαιωθήκαμε λοιπόν ότι με ολίσθηση μία θέση αριστερά ο αριθμός πολλαπλασιάζεται με την βάση του αριθμητικού συστήματος.

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

Ο υπολογιστής κάνει πολλαπλασιασμό δύο αριθμών με προσθέσεις και ολισθήσεις, όπως ακριβώς κάνουμε κι εμείς! Επειδή δεν με πιστεύετε, ας δούμε ένα παράδειγμα :
Θέλω να βρώ το γινόμενο (12 x 34). Γράφω
_12
_34 x
_--- (Το [4 επί 12 ίσον σαρανταοκτώ] το γράφω από κάτω)
_48 (Τώρα λέω [3 επί 12 ίσον τριανταέξι] και ετοιμάζομαι να το γράψω)
36 (Γιατί το έγραψα λίγο αριστερά;)
Γιατί εκείνο το 3 στον πολλαπλασιαστή ήταν στην πραγματικότητα τριάντα, 30 = 3x10, άρα πολλαπλασιάζω μεν επί 3 αλλά το σπρώχνω και μία θέση αριστερά επειδή πολλαπλασιάζω και επί 10.
(Αδιαφορώ για το τελείωμα του παραδείγματος).

Ας δούμε έναν πολλαπλασιασμό με δυαδικούς, πέντε επί έξι.
___110 (=610)
___101 x (=510)
___---
___110 (μία φορά το έξι, ναι, 6)
__000 (δύο φορές το έξι, όχι, 0)
_110 (τέσσερις φορές το έξι, ναι, 24)
_------
_11110 (=3010)

4.0 Συμπέρασμα

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

Υποψιάζεστε ότι η διαίρεση γίνεται με ολισθήσεις δεξιά και αφαιρέσεις;
Σωστό!
(Αλλά είναι θέμα για άλλη ανάρτηση).

Δεν υπάρχουν σχόλια: