Πραξεις που εκτελεί ο Η/Υ

Ξεκίνησε από klitos, 16 Σεπ 2009, 11:48:47 ΠΜ

« προηγούμενο - επόμενο »

klitos

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

P.Tsiotakis

πολλές προσθέσεις του ιδίου αριθμού = πολλαπλασιασμός
διαίρεση = το αντίθετο του πολαπλασιασμού

klitos

Παναγιώτη θεωρητικά ετσι ειναι, αλλα πρακτικά?
ας που με οτι εχω 5 * 7 τοτε γινεται 5+5+5+5+5+5+5
αλλα το 5/7 πως γίνεται ?
κλητος χατζηγεωργιου

pgrontas

#3
Αυτό που ρώτησε ο Κλήτος πάντα με έτρωγε και μένα.
Πώς υλοποιείται η διαίρεση πρακτικά - όχι κατ' ανάγκη στην πραγματικότητα αλλά με έναν τρόπο που να μπορείς να πείσεις
περίεργους (με την θετική έννοια) μαθητές.

Νομίζω η σωστότερη απάντηση είναι με τον αλγορίθμο της διαίρεσης που μαθαίναμε στο δημοτικό
Συνδυασμός δηλαδή Πολλαπλασιασμού Αφαίρεσης και Δοκιμών - Αν,Όσο.
Εδώ κολλάω όμως στο ότι πλέον πρόκειται για αλγόριθμο αρκετά πιο σύνθετο.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

alkisg

Νομίζω ότι ανάγεται στις βασικές πράξεις του υπολογιστή, δηλαδή πρόσθεση, negation (με τις δύο αυτές υλοποιείται και η αφαίρεση), shifting κτλ:
http://www.bearcave.com/software/divide.htm

za√‘ag

Αν δεν κάνω λάθος υπάρχει η εντολή DIV στην assembly... και στην ουσία σε επίπεδο μηχανής εκτελεί έναν "μικροκώδικα" ... Το θυμάμαι σωστά;
Δείτε κι εδώ (το link το είχε βάλει ο Άλκης για άλλο τόπικ)

Κάποτε είχα φτιάξει ένα προγραμματάκι σε Basic που έκανε πολ/σμό με μεγάλους αριθμούς (έπαιρνε 2 αριθμούς με μορφή string και έκανα τον πολ/σμό όπως τον μάθαμε στο Δημοτικό και το αποτέλεσμα ήταν ένα string με μέγεθος το πολύ 256 ψηφία)
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

Wizard

Στο συνημμένο υπάρχει η διαίρεση δυαδικών αριθμών (στα αγγλικά).

P.Tsiotakis

τον μαθηματικό τους, που τους είπε στην Α γυμνασίου για τις πράξεις γιατί δεν τον ρώτησαν?   :o  :o  :D

tropheus

Εγώ για τους περίεργους μαθητές που ρωτάνε πως γίνεται η διαίρεση με προθέσεις (γενικώς) τους δείχνω ένα απλό παράδειγμα ...

Έστω ότι θέλω να διαιρέσω το 17 με το 3 τότε κάνουμε διαδοχικά τις πράξεις :

17+(-3)=14
14+(-3)=11
11+(-3)=8
8+(-3)=5
5+(-3)=2

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


za√‘ag

Παράθεση από: tropheus στις 16 Σεπ 2009, 07:42:10 ΜΜ
Εγώ για τους περίεργους μαθητές που ρωτάνε πως γίνεται η διαίρεση με προθέσεις (γενικώς) τους δείχνω ένα απλό παράδειγμα ...

Έστω ότι θέλω να διαιρέσω το 17 με το 3 τότε κάνουμε διαδοχικά τις πράξεις :

17+(-3)=14
14+(-3)=11
11+(-3)=8
8+(-3)=5
5+(-3)=2

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




Ως μαθηματικός θα συμφωνήσω ... :)
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

klitos

Παράθεση από: tropheus στις 16 Σεπ 2009, 07:42:10 ΜΜ
Εγώ για τους περίεργους μαθητές που ρωτάνε πως γίνεται η διαίρεση με προθέσεις (γενικώς) τους δείχνω ένα απλό παράδειγμα ...

Έστω ότι θέλω να διαιρέσω το 17 με το 3 τότε κάνουμε διαδοχικά τις πράξεις :

17+(-3)=14
14+(-3)=11
11+(-3)=8
8+(-3)=5
5+(-3)=2

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


αυτό ειπα και εγω στην αρχή , αλλα αν πρεπει να κανεις το 3 δια 17 ?
κλητος χατζηγεωργιου

gpapargi

#11
Έχω την αίσθηση ότι ο υπολογιστής χρησιμοποιεί τον αλγόριθμο της διαίρεσης που κάναμε στο δημοτικό. Δεν είναι το ίδιο με το να ξεκινάς από το διαιρετέο και να αφαιρείς ποσότητα ίση με το διαιρέτη γιατί αν πχ ο διαιρετέος είναι 9999 και ο διαιρέτης είναι 3 θα γίνουν 3333 βήματα. Μετράει δηλαδή και η βαρύτητα του κάθε ψηφίου.

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

Ωστόσο η μεγάλη βελτίωση έρχεται από τη χρήση του δυαδικού συστήματος που χρησιμοποιεί ο υπολογιστής. Εκεί ο μονοψήφιος αριθμός είναι το 1 ή το 0. Δηλαδή στο δυαδικό σύστημα απλά βλέπεις αν ο διαιρέτης είναι μεγαλύτερος από τα τονισμένα ψηφία (και βάζεις 0) ή «χωράει» σε αυτά και βάζεις 1. Σύγκριση δηλαδή

Στη συνέχεια ο πολλαπλασιασμός του νέου ψηφίου του υπολοίπου με το διαιρέτη είναι τετριμμένος αφού το ψηφίο είτε είναι 1 (και κάνεις απλή μεταφορά) ή 0 και βάζεις 0. Μένει η αφαίρεση.

Η αφαίρεση είναι άλλη ιστορία και έχει να κάνει με το πως αναπαρίσταται ο αρνητικός στον υπολογιστή. Συνήθως παίζει το συμπλήρωμα του 2. Σε αυτή την περίπτωση για την αφαίρεση μετατρέπονται τα 0 σε 1 και τα 1 σε 0, προστίθεται 1, γίνεται πρόσθεση και απορρίπτεται το πρώτο ψηφίο. Το να κάνεις τέτοια αφαίρεση σε υπολογιστή που αναπαριστά τον αρνητικό με συμπλήρωμα του 2 είναι σα να κάνεις πρόσθεση με τον αντίθετο.

Κάποτε είχα δώσει στην τάξη ένα ανάλογο «δεκαδικό» πρόβλημα υπό μορφή σπαζοκεφαλιάς: «Να αφαιρεθεί πχ το 17 από το 65 με κομπιουτεράκι που έχει χαλάσει τι πλήκτρο – καθώς και η δυνατότητα αλλαγής πρόσημου»

Απάντηση:

Βρίσκεις το συμπλήρωμα του 17 (δηλαδή αυτό που πρέπει να του προσθέσεις για να γίνει 99). Είναι το 82.
Προσθέτεις 1 και γίνεται 83.
Προσθέτεις 83 + 65 και βρίσκεις 148
Αγνοείς το πρώτο ψηφίο και βρίσκεις 48 (Είναι ίσο με 65-17 ).


Wizard

Από τη σελίδα του μαθήματος "Τεχνολογία Υπολογιστικών Συστημάτων & Λειτουργικά Συστήματα" στο Π.Ι.: Πολλαπλασιασμός και διαίρεση ακεραίων

klitos

κλητος χατζηγεωργιου

gpapargi

Μια που τέθηκε και το θέμα του πολλαπλασιασμού, έχει ενδιαφέρον να δούμε στο κείμενο του Wizard ότι στο δυαδικό σύστημα ο γνωστός αλγόριθμος του κάθετου πολλαπλασιασμού «ενοποιείται» με τον πολλαπλασιασμό αλλά ρωσικά. Κάθε πράξη του κάθετου είναι ισοδύναμη με μια πράξη του αλά ρωσικά.

Δηλαδή ξεκινάει να κάνει τον κλασσικό κάθετο πολλαπλασιασμό του δημοτικού. Πρέπει λοιπόν κάθε ψηφίο του ενός αριθμού (εδώ του Α, ενώ στον κάθετο είναι ο κάτω) να το πολλαπλασιάσει με τον άλλο. Σε κάθε νέο ψηφίο του κάτω που παίρνουμε ξεκινάμε μετά από μια θέση αριστερότερα (ολίσθηση στο δεκαδικό). Εδώ το υλοποιεί με αριστερή ολίσθηση του Β.
Προσέξτε ότι αυτή η αριστερή ολίσθηση του Β είναι το επί 2 που κάνει ο αλά ρωσικά.
Το να διατρέχεις από δεξιά προς τα αριστερά είναι σα να αγνοείς το τελευταίο του ψηφίο (είναι το div 2 του αλά ρωσικά)
Τέλος το ότι προσθέτεις τον ολισθημένο Β ή 0 στο γινόμενο ανάλογα με το αν το ψηφίο σάρωσης του Α είναι 1 ή 0 είναι στον αλά ρωσικά η πρόσθεση του Μ1 στο γινόμενο όταν έχεις μονό Μ2. Αυτό ισχύει γιατί αν το τελευταίο ψηφίο του δυαδικού είναι 0 είναι ζυγός, ενώ αν είναι 1 είναι μονός (και είπαμε ότι το να σαρώνεις διαδοχικά τα ψηφία του Α είναι σαν να κόβεις ένα κάθε φορά και να αλλάζεις το τελευταίο που καθορίζει την αρτιότητα του αριθμού).

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

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



za√‘ag

Δείτε κι ένα τρόπο πολλαπλασιασμού χωρίς προπαίδεια και χωρίς υπολογιστή ;)

http://www.youtube.com/watch?v=kZKOPKIHsrc
«Δεν υπάρχει λόγος να θέλει κανείς έναν υπολογιστή στο σπίτι του»--Ken Olson, πρ. της DEC, 1977
«Τα 640KB RAM επαρκούν για να τρέξει κάθε πρόγραμμα»--Bill Gates
Δείτε κι άλλες ιστορικές ατάκες  εδώ

gpapargi

ΑΠό ότι βλέπω το 21 Χ 13 το κάνει (20+1) Χ (10+3) και μετά εφαρμόζει επιμεριστική ιδιότητα και βγαίνει: 20 Χ 10 + 20 Χ 3 + 1 Χ 10 + 1 Χ 3.
Αγνοεί τα μηδενικά που δίνουν βάρος πχ στην τάξη δεκάδων και γράφει με γραμμές τα ψηφία. Τα σημεία τομής δίνουν τα 4 επι μέρους γινόμενα.

Το πρόβλημα είναι αν βάλεις μεγάλα ψηφία πχ το 9. Αν οι 2 αριθμοί έχουν από πχ ένα 9 τότε κατά τον υπολογισμό του επιμέρους γινομένου τους θα γίνει κόλαση. Ο τρόπος με τον οποίο αποφεύγουν την προπαίδεια είναι με το να μετράνε ένα ένα τα σημεία τομής. Αν έχεις κάποια στιγμή 9 Χ 9 θα με τρήσεις 81 σημεία τομής. Καλύτερα με προπαίδεια. Για αυτό βγήκε, για να γλιτώσεις όλο αυτό το μέτρημα.