(Πηγή: Βιβλίο Μαθητή, Πληροφορική Α΄ Γυμνασίου, Κεφάλαιο 1 «ΨΗΦΙΑΚΟΣ ΚΟΣΜΟΣ», §1.4 «Δυαδικοί αριθμοί – Η γλώσσα των υπολογιστών», σελ. 14-18. Όλες οι 7 Δραστηριότητες του κεφαλαίου βρίσκονται μέσα σε αυτό το υποκεφάλαιο. Οι εκφωνήσεις είναι αυτούσιες από το σχολικό βιβλίο — επαληθεύτηκαν με render σελίδων σε εικόνα εκεί όπου υπήρχε αμφιβολία.)
Υπολογίστε τους αριθμούς i) 11, ii) 100, iii) 111, iv) 1000, v) 1111, vi) 10000 στο δυαδικό σύστημα. Τι παρατηρείτε; Μπορείτε να βρείτε πόσο κάνει 11111111 + 1 στο δυαδικό σύστημα, χωρίς να εκτελέσετε την πρόσθεση;
Σκέψη / Μεθοδολογία: Οι αριθμοί i)-vi) δίνονται ήδη γραμμένοι στο δυαδικό σύστημα (ίδιο ύφος με τα παραδείγματα 101010, 100001, 1000000, 111111 της θεωρίας λίγο πιο πάνω, που μετατρέπουν δυαδικό→δεκαδικό). Υπολογίζουμε την τιμή τους στο δεκαδικό σύστημα προσθέτοντας τις δυνάμεις του 2 στις θέσεις όπου υπάρχει ψηφίο 1.
Λύση:
Απάντηση: i) 3 ii) 4 iii) 7 iv) 8 v) 15 vi) 16. Το 11111111₂ + 1 = 100000000₂ (δηλαδή 256 στο δεκαδικό), αφού n άσσοι = 2ⁿ−1 και προσθέτοντας 1 παίρνουμε 2ⁿ = «1» + n μηδενικά.
Πρόσεξε:
Να μετατρέψετε στο δυαδικό σύστημα τους αριθμούς i) 2, ii) 4, iii) 8, iv) 16, v) 64. Τι παρατηρείτε;
Σκέψη / Μεθοδολογία: Όλοι οι δοσμένοι αριθμοί είναι δυνάμεις του 2 (2¹, 2², 2³, 2⁴, 2⁶). Η δυαδική αναπαράσταση μιας δύναμης 2ⁿ είναι πάντα «1» ακολουθούμενο από n μηδενικά.
Λύση:
Απάντηση: i) 10 ii) 100 iii) 1000 iv) 10000 v) 1000000. Κάθε δύναμη 2ⁿ γράφεται ως «1» + n μηδενικά.
Πρόσεξε:
i) Τι κοινό έχουν οι δυαδικές αναπαραστάσεις των αριθμών που είναι δυνάμεις του 2; ii) Τι κοινό έχουν οι αμέσως προηγούμενοί τους αριθμοί; iii) Να αναζητήσετε στο Διαδίκτυο πληροφορίες για το λατινικό σύστημα αρίθμησης, που χρησιμοποιούσαν οι Ρωμαίοι. Ποιος αριθμός δε μπορεί να αναπαρασταθεί στο σύστημα αυτό;
Σκέψη / Μεθοδολογία: Τα ερωτήματα i) και ii) συνοψίζουν τις παρατηρήσεις των Δραστηριοτήτων 1 και 2: οι δυνάμεις του 2 (2, 4, 8, 16, 64 — Δραστηριότητα 2) δίνουν στο δυαδικό «1»+μηδενικά, ενώ οι αμέσως προηγούμενοι αριθμοί (2ⁿ−1, όπως 3, 7, 15 που εμφανίστηκαν στη Δραστηριότητα 1) δίνουν μόνο άσσους. Το ερώτημα iii) είναι σύντομη έρευνα Διαδικτύου με μία, συγκεκριμένη, ευρέως τεκμηριωμένη απάντηση.
Λύση:
Απάντηση: i) Οι δυνάμεις του 2 γράφονται ως «1» + n μηδενικά. ii) Οι αμέσως προηγούμενοι αριθμοί (2ⁿ−1) γράφονται ως n άσσοι. iii) Ο αριθμός 0 (μηδέν) δεν μπορεί να αναπαρασταθεί στο ρωμαϊκό σύστημα αρίθμησης — δεν υπάρχει ρωμαϊκό σύμβολο για το μηδέν.
Πρόσεξε:
Υπολογίστε με χρήση του προθέματος 0b της Python τους αριθμούς i) 1, ii) 10, iii) 11111, iv) 100000, v) 1111111, vi) 10000000, στο δυαδικό σύστημα. Τι παρατηρείτε; Μπορείτε να βρείτε πόσο κάνει 100000000 – 1 στο δυαδικό σύστημα;
Σκέψη / Μεθοδολογία: Όπως εξηγεί το Παράδειγμα 2 της θεωρίας, αν βάλουμε το πρόθεμα 0b μπροστά από έναν αριθμό γραμμένο σε δυαδική μορφή, η Python επιστρέφει την τιμή του στο δεκαδικό σύστημα (π.χ. 0b100 → 4). Οι δοσμένοι αριθμοί i)-vi) είναι ήδη γραμμένοι σε δυαδική μορφή· τους δίνουμε στην Python με το πρόθεμα 0b για να δούμε την τιμή τους. Πρόκειται για επανάληψη του ίδιου μοτίβου με τη Δραστηριότητα 1, τώρα επαληθευμένο και μέσω του διερμηνευτή.
Λύση:
Απάντηση: i) 1 ii) 2 iii) 31 iv) 32 v) 127 vi) 128. Το 100000000₂ − 1 = 11111111₂ (δηλαδή 255 στο δεκαδικό).
Πρόσεξε:
content του πηγαίου JSON είχε λανθασμένη μεταγραφή εδώ (iv) 1000000, v) 11111111 και «10000000-1» αντί για τα σωστά iv) 100000, v) 1111111 και «100000000-1»). Επαληθεύτηκε το σωστό κείμενο με render της σελίδας σε εικόνα (pdftoppm, dpi=200) — χρησιμοποιήθηκαν οι επαληθευμένες τιμές, όχι το JSON.Υπολογίστε στο δεκαεξαδικό σύστημα με χρήση της εντολής hex της Python τους αριθμούς: i) 16, ii) 16⁴, iii) 16⁷, iv) 160. Τι παρατηρείτε; Να ερμηνεύσετε τα αποτελέσματα.
Σκέψη / Μεθοδολογία: Τα i)-iii) είναι δυνάμεις του 16 (16¹, 16⁴, 16⁷) — αναμένουμε να ισχύει στο δεκαεξαδικό σύστημα το ίδιο μοτίβο που ισχύει στο δυαδικό για δυνάμεις του 2 (Δραστηριότητα 2): κάθε δύναμη της βάσης γράφεται ως «1» ακολουθούμενο από n μηδενικά, όπου n ο εκθέτης. Το iv) (160, ΟΧΙ δύναμη του 16) μπαίνει επίτηδες ως αντιπαράδειγμα/έλεγχος, ώστε να φανεί ότι το μοτίβο ισχύει ΜΟΝΟ για τις δυνάμεις της βάσης.
Λύση:
Απάντηση: i) 0x10 ii) 0x10000 iii) 0x10000000 iv) 0xa0. Κάθε δύναμη 16ⁿ γράφεται στο δεκαεξαδικό ως «1»+n μηδενικά (ίδιο μοτίβο με τις δυνάμεις κάθε βάσης)· το 160, μη όντας δύναμη του 16, δεν ακολουθεί το μοτίβο.
Πρόσεξε:
Με χρήση των bin και 0x να μετατρέψετε τους παρακάτω αριθμούς από το δεκαεξαδικό σύστημα στο δυαδικό σύστημα αρίθμησης. i) 11, ii) AA, iii) FF, iv) 99, v) 1, vi) 10, vii) 100. Τι παρατηρείτε; Να ερμηνεύσετε τα αποτελέσματα.
Σκέψη / Μεθοδολογία: Οι δοσμένοι αριθμοί είναι γραμμένοι στο δεκαεξαδικό σύστημα. Πρώτα τους δίνουμε στην Python με το πρόθεμα 0x για να πάρουμε τη δεκαδική τους τιμή, και μετά εφαρμόζουμε τη bin() σε αυτήν την τιμή για να πάρουμε τη δυαδική αναπαράσταση.
Λύση:
Απάντηση: i) 10001 ii) 10101010 iii) 11111111 iv) 10011001 v) 1 vi) 10000 vii) 100000000. Κάθε δεκαεξαδικό ψηφίο = ακριβώς 4 δυαδικά ψηφία (16=2⁴).
Πρόσεξε:
Οι αριθμοί από 1 έως και 100 έχουν χωριστεί στις παρακάτω ομάδες με βάση κάποια συγκεκριμένη ιδιότητα. Ένας αριθμός μπορεί να ανήκει σε παραπάνω από μια ομάδες.
Ομάδα 0: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 Ομάδα 1: 2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31 34 35 38 39 42 43 46 47 50 51 54 55 58 59 62 63 66 67 70 71 74 75 78 79 82 83 86 87 90 91 94 95 98 99 Ομάδα 2: 4 5 6 7 12 13 14 15 20 21 22 23 28 29 30 31 36 37 38 39 44 45 46 47 52 53 54 55 60 61 62 63 68 69 70 71 76 77 78 79 84 85 86 87 92 93 94 95 100 Ομάδα 3: 8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31 40 41 42 43 44 45 46 47 56 57 58 59 60 61 62 63 72 73 74 75 76 77 78 79 88 89 90 91 92 93 94 95 Ομάδα 4: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 Ομάδα 5: 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 96 97 98 99 100 Ομάδα 6: 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
Μπορείτε να βρείτε τι κοινό έχουν οι αριθμοί κάθε ομάδας, όσον αφορά στη δυαδική τους αναπαράσταση;
- Χρησιμοποιήστε τον διερμηνευτή της Python για τη γρήγορη μετατροπή των αριθμών στο δυαδικό σύστημα, όπως φαίνεται στο παράδειγμα 1.
- Παρατηρήστε ότι 44 = 4 + 8 + 32. Ποια είναι η δυαδική του αναπαράσταση και σε ποιες ομάδες ανήκει;
- Παρατηρήστε ότι 23 = 1 + 2 + 4 + 16. Ποια είναι η δυαδική αναπαράσταση και σε ποιες ομάδες ανήκει;
- Τι παριστάνει ο πρώτος αριθμός κάθε ομάδας;
- Μπορείτε να βρείτε, χωρίς να κοιτάξετε τις ομάδες, ποιος είναι ο αριθμός που ανήκει i) μόνο στην ομάδα 3, ii) μόνο στην ομάδα 4, iii) στις ομάδες 0, 1 και 3;
- Ποιος είναι ο αριθμός που ανήκει σε όλες τις ομάδες;
Μπορείτε να παίξετε το εξής παιχνίδι με τους συμμαθητές και τις συμμαθήτριές σας. Σκεφτείτε έναν μυστικό αριθμό. Η μόνη πληροφορία που μπορείτε να δώσετε είναι σε ποιες από τις παραπάνω ομάδες ανήκει. Στη συνέχεια, θα πρέπει να βρουν αυτόν τον αριθμό και να περιγράψουν τη μέθοδο που ακολούθησαν.
Σκέψη / Μεθοδολογία: Επαληθεύτηκε υπολογιστικά (Python) ότι η Ομάδα k περιέχει ΑΚΡΙΒΩΣ τους αριθμούς n∈[1,100] των οποίων το bit στη θέση k (βαρύτητας 2ᵏ) είναι 1 στη δυαδική τους αναπαράσταση. Δηλαδή: Ομάδα 0 = αριθμοί με bit0=1 (μονάδες bit, δηλ. περιττοί αριθμοί), Ομάδα 1 = bit1=1 (βαρύτητα 2), Ομάδα 2 = bit2=1 (βαρύτητα 4), Ομάδα 3 = bit3=1 (βαρύτητα 8), Ομάδα 4 = bit4=1 (βαρύτητα 16), Ομάδα 5 = bit5=1 (βαρύτητα 32), Ομάδα 6 = bit6=1 (βαρύτητα 64). Το «παιχνίδι του μυστικού αριθμού» λειτουργεί επειδή το να ξέρουμε ΑΚΡΙΒΩΣ σε ποιες από τις 7 ομάδες (0-6) ανήκει ή δεν ανήκει ένας αριθμός 1-100 ισοδυναμεί με το να ξέρουμε την πλήρη δυαδική του αναπαράσταση (7 bits αρκούν για να αναπαρασταθεί κάθε αριθμός έως 127).
Λύση:
for k in range(7): group[k] = {n for n in range(1,101) if (n>>k)&1} — τα σύνολα που προκύπτουν ταυτίζονται ακριβώς με τις 7 τυπωμένες λίστες του βιβλίου.bin(5)='0b101' (η Python δίνει κατευθείαν τη δυαδική αναπαράσταση κάθε αριθμού, όπως στο Παράδειγμα 1 της θεωρίας).Απάντηση: Κάθε Ομάδα k = οι αριθμοί με bit k (βαρύτητα 2ᵏ) ίσο με 1 στη δυαδική τους αναπαράσταση. 2) 44=101100₂ → Ομάδες 2,3,5. 3) 23=10111₂ → Ομάδες 0,1,2,4. 4) Ο πρώτος αριθμός κάθε ομάδας k είναι το 2ᵏ (η «βαρύτητα» της ομάδας). 5) i) 8 ii) 16 iii) 11. 6) Κανένας αριθμός στο 1-100 δεν ανήκει σε όλες τις 7 ομάδες — θα χρειαζόταν τον αριθμό 127 (=2⁷−1), που ξεπερνά το όριο των 100.
Ενδεικτική περιγραφή του παιχνιδιού: Ο παίκτης Α σκέφτεται έναν μυστικό αριθμό n (1-100) και ανακοινώνει ΜΟΝΟ σε ποιες από τις 7 ομάδες (0-6) ανήκει, π.χ. «ανήκω στις ομάδες 0, 2 και 5». Ο παίκτης Β μετατρέπει αυτή την πληροφορία σε δυαδικό: βάζει 1 στις θέσεις-ομάδες που ακούστηκαν και 0 σε όλες τις υπόλοιπες (εδώ: bit0=1, bit2=1, bit5=1, τα υπόλοιπα 0 → 100101₂ = 32+4+1 = 37). Υπολογίζει το άθροισμα των αντίστοιχων δυνάμεων του 2 και βρίσκει τον αριθμό (37). Η μέθοδος λειτουργεί πάντα, γιατί η λίστα «σε ποιες ομάδες ανήκω» είναι ακριβώς η δυαδική αναπαράσταση του αριθμού γραμμένη με άλλα λόγια.
Πρόσεξε: