Παρασκευή 24 Οκτωβρίου 2008

Τι βιβλία έχω γράψει για πληροφορική

Κατά καιρούς έχω γράψει διάφορα κείμενα σχετικά με την πληροφορική.
Όταν άρχισα να γράφω, γύρω στο χίλια εννιακόσια εβδομήντα τόσο, δεν υπήρχε διαδίκτυο και ο προγραμματισμός γινόταν σε γλώσσα assembly και ενίοτε σε γλώσσα μηχανής. Κάποια από αυτά τα κείμενα ([Δίκτυα Υπολογιστών], [Δυαδικές Αριθμητικές Μονάδες Η/Υ], [Αξιοπιστία Λογισμικού Υπολογιστών]) είναι σήμερα αρχαία ιστορία, που ελπίζω να δημοσιεύσω κάποτε, έστω και μόνο για ιστορικούς λόγους.

Τα παρακάτω κείμενα (σήμερα σε μορφή .pdf) έχουν χρησιμοποιηθεί για παρουσιάσεις σεμιναρίων ή για διδασκαλία μαθημάτων. Βασική προϋπόθεση για τα διδακτικά εγχειρίδια είναι η απλή και κατανοητή μορφή του κειμένου, αλλά δεν είναι πάντοτε εφικτή. Πιστεύω όμως ότι αν διαβάσετε τα κείμενά μου θα ανακαλύψετε αρκετές χρήσιμες λεπτομέρειες, και όλοι γνωρίζουμε ότι στην πληροφορική είναι μεγάλη η σημασία της λεπτομέρειας!

Σημειώστε ότι η λίστα μπορεί να ανανεώνεται χωρίς προειδοποίηση!

01-02.
[Άλγεβρα Μπουλ] και
[Συναρτήσεις Αληθείας (Λογικές Συναρτήσεις)].
Σημειώσεις επαναλαμβανόμενου (18/01/1977, 16/01/1978, 15/01/1980) σεμινάριου που έδινα στο Πανεπιστήμιο Πατρών.

03.
[Δομημένος Προγραμματισμός, με αναλυτικά παραδείγματα σε Fortran 77], βιβλίο που περιέχει και ένα διαγώνισμα.
Το έγραψα σε πρώτη μορφή το 1984 για πρωτοετείς της Πολυτεχνικής Σχολής Πανεπιστημίου Πατρών, τμήμα [Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπολογιστών].

04-05.
[Λειτουργικά Συστήματα], βιβλίο και
[Λειτουργικά Συστήματα, τεύχος ασκήσεων].
Το έγραψα το 2005 για εργαζόμενους σπουδαστές ειδικότητας [Τεχνικός Η/Υ, Επικοινωνιών και Δικτύων] ΙΕΚ Σιβιτανιδείου.

06-07.
[Δομημένος Προγραμματισμός, με αναλυτικά παραδείγματα σε ΓΛΩΣΣΑ], βιβλίο (γράφτηκε το 2006) και
[Δομημένος Προγραμματισμός, τεύχος ασκήσεων] (γράφτηκε το 2007 - μετά την τελευταία αναθεώρηση 22/05/2009 περιέχει 4 διαγωνίσματα).
Για μαθητές Λυκείου που δίνουν ΑΕΠΠ δηλ. [Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον].

Τετάρτη 22 Οκτωβρίου 2008

Συμπληρώματα σε άλλη βάση

Από μια ερώτηση που μου έθεσαν, θέλω να διευκρινίσω τα παρακάτω:

Ερώτηση 1:
Ενας υπολογιστής χρησιμοποιεί λέξη των 6 bits.
Για τους αρνητικούς χρησιμοποιεί [Συμπλήρωμα του 2].
Ασχολούμαστε με τον -2310.
Από το +2310 = 0 101112 παίρνουμε ότι
[Στ1, Συμπλήρωμα του 1] είναι το 1 010002 και
[Στ2, Συμπλήρωμα του 2] είναι το 1 010012 = -2310.
Πώς γράφεται το συμπλήρωμά του στο οκταδικό σύστημα;

Απάντηση 1:
Ο υπολογιστής κάνει πράξεις στο δυαδικό και μόνο εκεί χρειαζόμαστε τα Στ1 και Στ2.
Για να παραστήσουμε αρνητικούς αριθμούς στο οκταδικό
θα χρησιμοποιούσαμε [Στ7, Συμπλήρωμα του 7] και [Στ8, Συμπλήρωμα του 8].
Ο αριθμός +2310 γράφεται 0278 (πρόσημο θετικό, 2*8 + 7 = 2310 η τιμή).
Το Στ7 του 0 2 78 είναι 1 5 08 (το 0 έγινε 1, το 2 έγινε 7-2=5, το 7 έγινε 7-7=0).
Άρα το Στ8 είναι 1508 + 1 = 1518 (αυτός είναι ο -2310 στο οκταδικό με σύστημα Στ8).
Επαλήθευση : 0278 + 1518 δίνει 0008 = +08 (το κρατούμενο από την θέση του προσήμου χάνεται).

Ερώτηση 2:
Λέτε ότι -2310 = 1518.
Έδωσα στο calculator των windows τον δεκαδικό -23,
ζήτησα να το δείξει οκταδικά με μήκος word 6 και έδωσε 177751. Ποιό είναι το σωστό;

Απάντηση 2:
Ο υπολογιστής, για τον οποίο ορίσαμε λέξη 6 bits, κάνει πράξεις στο δυαδικό.
Στο οκταδικό μόνο εμφανίζει, άρα γίνονται κάποιοι συμβιβασμοί.

Αν η λέξη έχει μόνο 6 δυαδικά ψηφία, ο μέγιστος θετικός θα είναι 0 11 1112 = 0 378 = +3110,
(συμβιβαστικά, το οκταδικό 3 φτιάχτηκε από τα δύο ψηφία 11
με την υπόθεση ότι μπροστά τους είχαν κι άλλο ψηφίο=0, 0112 = 38).
Αυτό σημαίνει ότι η λέξη δεν χωράει τους αμέσως μεγαλύτερους οκταδικούς 0 408, 0 418, κλπ..

Ο -2310 στο δυαδικό είναι 1 010012. Αυτά είναι 6 bits.
Όταν η αριθμομηχανή δείχνει 1777518, χρησιμοποιεί 16 bits (1 πρόσημο + 5 οκταδικά * 3 bits/οκταδικό).

Για τα 6 bits λοιπόν, το -2310 = 101 0012 = 518
(όπου υπονοείται ότι το πρώτο bit από τα τρία bits του 5 είναι το πρόσημο).
(Η αριθμομηχανή με βαθμιαία μεγαλύτερη λέξη θα τον δείχνει 151, 351, 751, 1751, 3751, 7751, 17751 κλπ).

Σε δεκαεξαδική μορφή -2310 = 10 10012 = 2916.
(Η αριθμομηχανή με βαθμιαία μεγαλύτερη λέξη θα τον δείχνει 69, E9, 1E9, 3E9, 7E9, FE9, 1FE9 κλπ).

Εδώ μπορείτε να αρχίσετε να φτιάχνετε μια ιδιαίτερη κατηγορία προβλημάτων:
"Έδωσα στον υπολογιστή τον δεκαδικό -23 και όταν τον ζήτησα οκταδικό μου τον έδειξε 177751. Με πόσα bits κάνει πράξεις ο υπολογιστής;"
Βρήκαμε παραπάνω την απάντηση : 16.

Πέμπτη 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 Συμπέρασμα

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

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

Δευτέρα 6 Οκτωβρίου 2008

Μετατροπές αριθμών

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

Κατά συνθήκη, χρησιμοποιούμε τα ίδια ψηφία με ίδια αξία και σε συστήματα με μεγαλύτερη βάση. Π.χ. Το τέσσερα του οκταδικού συστήματος είναι ίδια ποσότητα με το τέσσερα του δεκαδικού συστήματος κλπ. Συνοπτικά : 48 = 410 = 416

1.0 Μετατροπή από το δυαδικό σύστημα στο δεκαδικό σύστημα :

1.1 Έχουμε τον αριθμό 101102 και θέλουμε να βρούμε την τιμή του στο δεκαδικό σύστημα. Αν χρησιμοποιήσουμε τις δυνάμεις της βάσης (σύμβολο ^ για την ύψωση σε δύναμη), η τιμή αυτή θα είναι
101102 = 1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 1 * 2^1 + 0 * 2^0
= 1 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 0 * 1
= 16 + 4 + 2
= 22 .

Είναι εύκολο να μάθουμε τις αρχικές δυνάμεις του δύο : 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536.

1.2 Ας θυμηθούμε το σχήμα Horner για τον υπολογισμό της τιμής των πολυωνύμων χωρίς υψώσεις σε δύναμη, (αρχίζουμε από τον αριστερότερο συντελεστή, πολλαπλασιάζουμε επί την μεταβλητή και προσθέτουμε τον δίπλα-δεξιά συντελεστή, και επαναλαμβάνουμε αν υπάρχουν άλλα μονώνυμα).
a * x3 + b * x2 + c * x + d = ( ( a * x + b ) * x + c ) * x + d

Χρησιμοποιώντας το σχήμα Horner, (αρχίζουμε από το αριστερότερο ψηφίο, πολλαπλασιάζουμε επί την βάση και προσθέτουμε το δίπλα-δεξιά ψηφίο, και επαναλαμβάνουμε αν υπάρχουν άλλα ψηφία), η τιμή για το 101102 του προηγούμενου παραδείγματος βρίσκεται και έτσι :
101102 = (((1 * 2 + 0) * 2 + 1) * 2 + 1) * 2 + 0
= ((2 * 2 + 1) * 2 + 1) * 2 + 0
= (5 * 2 + 1) * 2 + 0
= 11 * 2 + 0
= 22 .

2.0 Μετατροπή από το δυαδικό σύστημα σε σύστημα με βάση [δύναμη του δύο] :

2.1 Έχουμε τους αριθμούς 101102, 101010.01012 και θέλουμε να βρούμε την τιμή τους στο οκταδικό σύστημα.

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

101102 = 010 1102
= 2 68
= 2 * 8 + 6
= 22

101010.01012 = 101 010 . 010 1002
= 5 2 . 2 48
= 5 * 8^1 + 2 * 8^0 + 2 * 8^(-1) + 4 * 8^(-2)
= 5 * 8 + 2 + 2 * (1/8) + 4 * (1/64)
= 40 + 2 + 0.25 + 0.0625
= 42.3125

2.2 Αν θέλουμε να μετατρέψουμε τους ίδιους δυαδικούς του προηγούμενου παραδείγματος σε δεκαεξαδικούς, επειδή το δεκαέξι είναι το [δύο στην τετάρτη δύναμη], θα χωρίσουμε τα ψηφία τους σε τετράδες.

101102 = 0001 01102
= 1 616
= 1 * 16^1 + 6 * 16^0
= 1 * 16 + 6
= 22

101010.01012 = 0010 1010 . 01012
= 2 A . 516
= 2 * 16^1 + 10 * 16^0 + 5 * 16^(-1)
= 2 * 16 + 10 + 5 * (1/16)
= 32 + 10 + 0.3125
= 42.3125

3.0 Μετατροπή από το δεκαδικό σύστημα σε άλλο:

3.1 Ας μετατρέψουμε τον 42.3125 σε οκταδικό. Οι δυνάμεις του οκτώ είναι (σε φθίνουσα σειρά):

8^2 = 64,
8^1 = 8,
8^0 = 1,
8^(-1) = 0.125,
8^(-2) = 0.015625,
8^(-3) = 0.001953125, ...

Εξηντατεσσάρια [64] ο αριθμός μας, 42.3125, δεν περιέχει.
Πόσα οκτάρια [8] περιέχει; Πέντε [5] και μένει υπόλοιπο 2.3125 .
Πόσους άσους [1] περιέχει αυτό; Δύο [2] και μένει υπόλοιπο 0.3125 . Εδώ περνάμε στο κλασματικό μέρος (θέση υποδιαστολής).
Πόσα [0.125] περιέχει αυτό; Δύο [2] και μένει υπόλοιπο 0.0625 .
Πόσα [0.015625] περιέχει αυτό; Τέσσερα [4] και μένει υπόλοιπο μηδέν.
Σταματάμε εδώ έχοντας βρει αποτέλεσμα 52.248.

3.2.1 Ας μετατρέψουμε τον 22 σε δυαδικό. Δυνάμεις του δύο σε φθίνουσα σειρά είναι
2^5 = 32,
2^4 = 16,
2^3 = 8,
2^2 = 4,
2^1 = 2,
2^0 = 1.

Τριανταδυάρια [32] ο αριθμός μας, 22, δεν περιέχει.
Πόσα δεκαεξάρια [16] περιέχει; Ένα [1] και μένει υπόλοιπο 6.
Πόσα οκτάρια [8] περιέχει αυτό; Μηδέν [0] και μένει υπόλοιπο 6.
Πόσα τεσσάρια [4] περιέχει αυτό; Ένα [1] και μένει υπόλοιπο 2.
Πόσα δυάρια [2] περιέχει αυτό; Ένα [1] και μένει υπόλοιπο μηδέν.
Πόσους άσους [1] περιέχει αυτό; Μηδέν [0] και τελειώσαμε με το ακέραιο μέρος.
Σταματάμε εδώ έχοντας βρει 101102.

3.2.2 Με διαφορετικό τρόπο τώρα θα μετατρέψουμε τον δεκαδικό 22 σε δυαδικό :

Το δύο διαιρεί τον αριθμό 22, με πηλίκο 11 και υπόλοιπο [0].
Το δύο διαιρεί το πηλίκο 11, με πηλίκο 5 και υπόλοιπο [1].
Το δύο διαιρεί το πηλίκο 5, με πηλίκο 2 και υπόλοιπο [1].
Το δύο διαιρεί το πηλίκο 2, με πηλίκο 1 και υπόλοιπο [0].
Το δύο διαιρεί το πηλίκο 1, με πηλίκο 0 και υπόλοιπο [1].
Σταματάμε όταν φθάσουμε σε μηδενικό πηλίκο και ο αριθμός που ζητούμε είναι τα υπόλοιπα με ανάποδη σειρά: 101102.

4.0 Μετατροπή από το δεκαεξαδικό σύστημα σε άλλο:

4.1 Για να βρούμε στο δεκαδικό σύστημα ποιός αριθμός ισούται με τον δεκαεξαδικό F1616, χρησιμοποιούμε το σχήμα Horner.

F 1 616 = ((F * 16 + 1) * 16 + 6
= ((15 * 16 + 1) * 16 + 6
= 241 * 16 + 6
= 3862.

4.2 Για να βρούμε στο οκταδικό σύστημα ποιός αριθμός ισούται με τον δεκαεξαδικό F1616, τον κάνουμε πρώτα δυαδικό αριθμό μετατρέποντας κάθε ψηφίο του σε ομάδα τεσσάρων δυαδικών, και μετατρέπουμε στην συνέχεια τον δυαδικό σε οκταδικό ομαδοποιώντας τα ψηφία ανά τρία.

F 1 616 = 1111 0001 01102
= 1111000101102
= 111 100 010 1102
= 7 4 2 68.

Πόρισμα : Όσο μικρότερη είναι η βάση του συστήματος αρίθμησης, τόσο περισσότερα ψηφία χρειάζονται για να εκφραστεί η ίδια αριθμητική ποσότητα. Π.χ. F1616 = 74268 = 1111000101102