Εισαγωγή στην Επιστήμη των Υπολογιστών
Περιεχόμενα Μαθήματος Συστήματα αρίθμησης Πύλες Διάγραμμα ροής-ψευδοκώδικας Python
Συστήματα Αρίθμησης
Δεκαδικό σύστημα Οι άνθρωποι χρησιμοποιούν το περίφημο «θεσιακό, δεκαδικό» σύστημα Δεκαδικό γιατί έχουμε δυνάμεις του 10 Θεσιακό γιατί η θέση κάθε στοιχείου καθορίζει τον εκθέτη κάθε δύναμης
A = i= 0 α 10 i i α {0,9} Συντελεστές βάρους 2 1 0 Θέση 3 4 6 6 10 4 10 3 10 0 1 2 = 6 1= 6 = 4 10= 40 = 3 100= 300 Πιθανοί συντελεστές βάρους είναι οι δέκα αριθμοί 0 1 2 3 4 5 6 7 8 9
Δυαδικό σύστημα Οι υπολογιστές χρησιμοποιούν το δυαδικό σύστημα αρίθμησης (binary) Αριθμοί με βάση το 2 Ευκολία σχεδιασμού Μείωση παρεμβολών Αύξηση ταχύτητας λειτουργίας Μείωση κόστους παραγωγής
Αναπαράσταση ακεραίων στο δυαδικό 1) Χρησιμοποιούμε 2 αριθμούς για τους συντελεστές, αρχίζοντας από το μηδέν: 0,1 2) Χρησιμοποιούμε σαν βάση κάθε δύναμης το 2 1) Η θέση κάθε συντελεστή καθορίζει τον εκθέτη της δύναμης (του 2)
Δεκαδική αξία του δυαδικού αριθμού Π.χ. Η δεκαδική αξία του δυαδικού αριθμού 10011,01 αξία = 1 2 4 + 0 2 3 + 0 2 2 + 1 2 1 + 1 2 0 + 0 2-1 + 1 2-2 = = 16 + 2 + 1 + 1/4 = 19,25
Αναπαράσταση σταθερής Υποδιαστολής Έστω x ένας πραγματικός αριθμός με παράσταση σε αριθμητικό σύστημα με βάση β: x = (a n a n-1... a 1 a 0.b 1 b 2...) β και αριθμητική τιμή*: Όπου a i, b i {0, 1,, β-1} v( x) = n i= 0 i a i β + bβ i= 1 i i Η τελεία (.) διαχωρίζει το ακέραιο μέρος του αριθμού: από το κλασματικό: b 1 b 2 b 3... a n a n-1... a 1 a 0 * Πάντα στο δεκαδικό σύστημα
Χρησιμοποιούμενες Βάσεις Όνομα Βάσης Βάση Σύνολο ψηφίων Παράδειγμα Δυαδικό 2 {0, 1} 111111.11 2 Δεκαδικό 10 {0,1,2,3,4,5,6,7,8,9} 255 10 Δεκαεξαδικό 16 {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} FF 16 Οκταδικό 8 {0,1,2,3,4,5,6,7} 37.7 8 Δεκαδικό 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Δεκαεξαδ 0 1 2 3 4 5 6 7 8 9 A B C D E F Δυαδικό 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
Μετατροπή στο δεκαδικό σύστημα (ABC) 16 = C + 16*B + 16 2 *A = 12 + 16 * 11 + 16 2 * 10 = (2748) 10 (7634) 8 = 4 + 8*3 + 8 2 *6 + 8 3 *7 = 4 + 8(3 + 8(6 + 8(7))) = (3996) 10 (.263) 8 = 2*8-1 + 6*8-2 + 3*8-3 = 8-3 (3 + 8(6 + 8(2))) = 179/512 = (.3496...) 10 (1101) 2 = 1 + 0*2 + 1*2 2 + 1*2 3 = 1 + 2(0 + 2(1 + 2(1))) = (13) 10
2 αδικό (8 αδικό, 16 αδικό ) Οκταδικό 0 1 2 3 4 5 6 7 Δυαδικό 000 001 010 011 100 101 110 111 Δεκαεξαδ 0 1 2 3 4 5 6 7 8 9 A B C D E F Δυαδικό 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Κανόνας 1: Αντιστοίχηση τριών δυαδικών ψηφίων σε ένα οκταδικό, ή τεσσάρων δυαδικών ψηφίων σε ένα δεκαεξαδικό. Κανόνας 2: Το ακέραιο μέρος ομαδοποιείται από την υποδιαστολή και αριστερά και το δεκαδικό από την υποδιαστολή και δεξιά
Παραδείγματα (11011110011) 2 = (011 011 110 011) 2 = (3363) 8 = (0110 1111 0011) 2 = (6F3) 16 (10110111101101.10010011) 2 = (010 110 111 101 101.100 100 110) 2 = (26755.446) 8 (CB3.15) 16 = (1100 1011 0011.0001 0101) 2 C B 3 1 5 (123.45) 8 = (001 010 011.100 101) 2 1 2 3 4 5 = (0010 1101 1110 1101.1001 0011) 2 = (2DED.93) 16
Μετατροπή από 10δικό σε βάση β Μέθοδος επαναληπτικής διαίρεσης Είσοδος του αριθμού Ν Αποθηκεύω το υπόλοιπο του Ν με το β Θέτω N N/ β Επαναλαμβάνω όσο Ν > 0 Η λύση είναι τα αποθηκευμένα υπόλοιπα με ανάποδη σειρά
Παράδειγμα: Μετατροπή δεκαδικού σε δυαδικό Δεκαδικός 67 Δυαδικός 1000011 Ανάποδη σειρά 67-66 2 33 2 16-16 2 8 2-8 4 2-4 2 2-32 - 2 1 1 1 0 0 0 0
Παράδειγμα: Μετατροπή δεκαδικού σε δεκαεξαδικό 135-128 16 8 139-128 16 8 196-192 16 12 C 7 11 B 4 (87) 16 =(135) 10 (8B) 16 =(139) 10 (C4) 16 =(196) 10
Μετατροπή δεκαδικού μέρους Μέθοδος επαναληπτικού πολλαπλασιασμού (Όλες οι πράξεις γίνονται σε αριθμητική α) Είσοδος του δεκ. αριθμού Χ σε σύστημα βάσης α Αποθηκεύω το ψηφίο που προκύπτει από το ακέραιο μέρος του (β*χ) α Θέτω Χ Δεκαδ[(β*Χ) α ] Επαναλαμβάνω έως ότου Χ = 0 ή φτάσω έναν προκαθορισμένο αριθμό δεκ. ψηφίων Η λύση είναι τα αποθηκευμένα υπόλοιπα με την σειρά που υπολογίστηκαν
Παράδειγμα (.2652) 10 σε 8ικό g0 = (.2652) 10 g1 = Dec(.2652*8) = (.1216) 10 d1 = 2 (8*.2652 = 2.1216) g2 = Dec(.1216*8) = (.9728) 10 d2 = 0 (8*.1216 = 0.9728) g3 = Dec(.9728*8) = (.7824) 10 d3 = 7 (8*.9728 = 7.7824) g4 = Dec(.7824*8) = (.2592) 10 d4 = 6 g5 = Dec(.2592*8) = (.0736) 10 d5 = 2............ Επομένως: (.2652) 10 = (.20762 ) 8 = (.010000111110010 ) 2 (.1) σε δυαδικό g0 = (.1) 10 g1 = Dec(0.1*2) = (0.2) 10 d1 = 0 g2 = Dec(0.2*2) = (0.4) 10 d2 = 0 g3 = Dec(0.4*2) = (0.8) 10 d3 = 0 g4 = Dec(0.8*2) = (0.6) 10 d4 = 1 g5 = Dec(0.6*2) = (0.2) 10 d5 = 1......... Eπομένως: (0.1) 10 = (0.0001 1001 1001 1001...) 2
Με χρήση του Excel μετατροπή στο δεκαδικό =BIN2DEC(11111111) -> 255 =OCT2DEC(7777) -> 4095 =HEX2DEC( ABCD ) -> 43981
Με χρήση του Excel μετατροπή από δεκαδικό =DEC2BIN(255) ->11111111 =DEC2OCT(255) -> 377 =DEC2HEX(255) ->FF
Υπάρχουν επίσης οι συναρτήσεις BIN2OCT BIN2HEX OCT2BIN OCT2HEX HEX2BIN HEX2OCT
Δυαδικη Αριθμητικη Προσθεση : 0+0=0, 0+1=1, 1+0=1 1+1 = 10 (Αθροισμα =0, κρατουμενο=1) 1+1+1 = 11 (Αθροισμα=1, κρατουμενο=1) 1 1 1 1 κρατουμενα 95 1 0 1 1 1 1 1 +20 + 0 0 1 0 1 0 0 115 1 1 1 0 0 1 1
Αφαιρεση: 0-0=0, 1-0=1, 1-1=0, 0-1= υπολοιπο 1, δανεικο =1-1 δανεικο -1-1 5 1 0 1 17 1 0 0 0 1-3 - 1 1-9 - 1 0 0 1 2 0 1 0 08 0 1 0 0 0-1 -1 46 1 0 1 1 1 0-17 - 1 0 0 0 1 29 0 1 1 1 0 1
ΠΙΝΑΚΑΣ ΠΡΟΣΘΕΣΕΩΝ ΣΤΟ 8ΔΙΚΟ ΣΥΣΤΗΜΑ ΑΡΙΘΜΗΣΗΣ
ΠΙΝΑΚΑΣ ΠΡΟΣΘΕΣΕΩΝ ΣΤΟ 16ΔΙΚΟ ΣΥΣΤΗΜΑ ΑΡΙΘΜΗΣΗΣ + 1 2 3 4 5 6 7 8 9 A B C D E F 1 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 2 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 3 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 4 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 5 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 6 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 7 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 8 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 9 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
Πράξεις στο 16δικό
Παράσταση συμπληρώματος ως προς ένα Το συμπλήρωμα ως προς ένα μιας δυαδικής ακολουθίας λαμβάνεται αλλάζοντας όλα τα bits από μηδέν σε ένα και αντιστρόφως 1 0 0 1 0 0 1 1 0 1 1 0 1 1 0 0 Παράσταση ακεραίων τιμών Οι αρνητικοί αναπαριστώνται ως το συμπλήρωμα ως προς ένα των θετικών 0001 +1 0010 +2 0011 +3 0100 +4 0101 +5 0110 +6 0111 +7 1110-1 1101-2 1100-3 1011-4 1010-5 1001-6 1000-7
Αριθμητική Συμπληρώματος του δύο Οι αριθμητικές πράξεις υλοποιούνται ευκολότερα Το πιο σημαντικό bit (ΜSB) χρησιμοποιείται για τον προσδιορισμό του πρόσημου Όταν MSB = 0, τότε ο αριθμός είναι θετικός ή μηδέν και το μέτρο δίνεται από τα υπόλοιπα (n-1) ψηφία του αριθμού Όταν ΜSB = 1, ο αριθμός είναι αρνητικός και το μέτρο του αριθμού δίνεται από το συμπλήρωμα ως προς 2 του συνόλου των ψηφίων του αριθμού To συμπλήρωμα ως προς 2 βρίσκεται αλλάζοντας όλα τα bits (0 σε 1 και 1 σε 0) και προσθέτοντας 1 στο αποτέλεσμα π.χ., για n=6 bits, Χ 10 = +17 => Χ 2 = 010001
Παρασταση αρνητικων με συμπληρωμα ως προς δυο Γρηγορη μεθοδος υπολογισμου του συμπλ. ως προς 2 [0111] 2 =[0111] 1 +1=1000+1=1001 (παρασταση του 7) [1010] 2 =[1010] 1 +1=0101+1=0110 =6 => 1010=-6
Το αλγεβρικό άθροισμα δύο αριθμών στην παράσταση συμπληρώματος του 2, προκύπτει ως το δυαδικό άθροισμα των δύο αριθμών, αγνοώντας το τυχόν κρατούμενο +12 001100 +17 010001 ----- --------- 29 011101-12 110100 +17 010001 ----- --------- +5 000101 Αγνοείται το κρατούμενο 1 +12 001100-17 101111 ----- --------- -5 111011-12 110100-17 101111 ----- --------- - 29 100011 Αγνοείται το κρατούμενο 1
Παράσταση συμπληρώματος ως προς δύο Αριθμητικές πράξεις Το υλικό των υπολογιστών διαθέτει ένα κύκλωμα αθροιστή που χρησιμοποιείται τόσο για την πρόσθεση όσο και για την αφαίρεση Αλγόριθμος αφαίρεσης βρες το συμπλήρωμα του αφαιρετέου ως προς 2 πρόσθεσε το συμπλήρωμα στο μειωτέο // αγνοείται το τελικό κρατούμενο αν υπάρχει