Η αριθμητική πράξη ενότητα

Σάββατο 31 Μαΐου 2008

Η ενότητα είναι ένα από τα διαθέσιμα aritmentiche σχεδόν σε όλες τις γλώσσες προγραμματισμού (I χρησιμοποίησε για πρώτη φορά με το βασικό Commodore 64) . Μπορεί να φαίνεται ως καθαρό, όπως στην περίπτωση της Actionscript Javascript ή χρησιμοποιώντας τόσο το "τοις εκατό" (α% β), ή ως μέθοδο ή την εκπαίδευση. Για προγραμματιστές μπορεί να είναι χρήσιμες σε ένα φαινομενικά διαφορετικό. Gskinner μίλησε πρόσφατα, παρουσιάζουν ορισμένα κλασικά, αλλά και ενδιαφέροντα παραδείγματα.

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

Διαιρετό από διακόπτη ...

Το πρώτο που μπορούμε να κάνουμε χρήση της ενότητας είναι να προσδιοριστεί αν ένας αριθμός διαιρείται με μια σειρά β! Εάν η risultatto ενός% β (εδώ η χρήση συμβολισμός% για να δείχνει τη λειτουργία του μορφή) είναι μηδενικό, ένα είναι διαιρετό από β. Θυμάμαι όταν είχα να κάνω με ένα πρόβλημα όπως και δεν ήξερα για τη λειτουργία της μονάδας. Από την Commodore 64, είχα ανάγκη να μάθω αν ένας αριθμός διαιρείται με το 2. Σε αυτό το Usai σύνταξη (βρήκα τον αρχικό κώδικα - έτος 1983):

ΚΩΔΙΚΟΣ:
  1. 10 INPUT A
  2. : IF B = INT ( B ) THEN PRINT "OK IL NUMERO " A " E' PARI" :GOTO 10 12 B = A / 2: Αν Β = INT (B) THEN PRINT "OK NUMBERS" Α "και" ίσες ": GOTO 10
  3. A " E' DISPARI" :GOTO 10 14 PRINT "Ο αριθμός" Α "και" ODD ": GOTO 10

ΒΑΣΙΚΕΣ Commodore 64, ωστόσο, δεν είχαν τη λειτουργία του μορφή - τουλάχιστον ότι θυμάμαι!

Στην πράξη, έκανα ακριβώς ό, τι είναι από τη φύση της συναλλαγής μορφή: Βεβαιωθείτε ότι η διαίρεση κατά 2 δεν ανάπαυσης, στην περίπτωση αυτή επαληθεύεται ότι το αποτέλεσμα δεν περιέχουν δεκαδικά IF B = INT(B) Αν η πράξη της διαίρεσης είναι ίση με την πλήρη, τότε ο αριθμός είναι!

Εάν σε a έχουμε την αξία που πρέπει να ελεγχθεί, το ίδιο πράγμα μπορεί να επιλυθεί από:

Actionscript:
  1. a % 2 ) == 0 ) { if ((a% 2) == 0) (
  2. / / Ισότητα
  3. )

Ή, για 3, με:

Actionscript:
  1. a % 3 ) == 0 ) { if ((α% 3) == 0) (
  2. / / Διαιρετού από 3
  3. )

Μικρή σημείωση: χάρη στο κομμάτι αν έχουν να κάνουν με τη δύναμη του 2 είναι ένα annche πιο γρήγορος τρόπος για να ελέγξετε αν ένας αριθμός είναι παράξενο ή ακόμα. Στην δυαδική μορφή, στην πραγματικότητα, οι αριθμοί έχουν όλα το πρώτο bit στο μηδέν! Έτσι, χρησιμοποιώντας τη λογική φορείς, μπορείτε να πείτε εάν ένας αριθμός και παράξενο ή ακόμα και απλά "testant" το πρώτο bit:

Actionscript:
  1. ! ( a & 1 ) ) { if (! (α & 1)) (
  2. / / Ισότητα
  3. )

Κατά τη Συνέλευση, για παράδειγμα, αυτό είναι καθημερινά ψωμί! Και είναι ακόμη πιο άμεση και απλή (η Motorola 68020, για παράδειγμα, είχε μια BTST ότι "δοκιμαστεί" σε μία μόνο λίγο ?) ). Οι λογικές πράξεις (AND, OR, NOT, XOR, κ.λπ. ...), στην πραγματικότητα, είναι γνωστό για την ταχύτερη σε επίπεδο Επιτροπής και στη συνέχεια η "μηχανή του χρόνου"! (a & 1) που εκτελεί τη λογική πράξη της ΚΑΙ & - λίγο λίγο πολλαπλασιασμός) μεταξύ μας a και 1 (ονομάζεται μάσκα). Αν a = 7 (00000111), για παράδειγμα:

ΚΩΔΙΚΟΣ:
  1. 00000111 ΚΑΙ
  2. = 00000001
  3. 00000001? Παράξενο

Αν a = 8:

ΚΩΔΙΚΟΣ:
  1. 00001000 ΚΑΙ
  2. = 00000001
  3. 00000000? Ίση

Δεν μπορούμε να ελέγξουμε μόνο τους αριθμούς, δηλαδή, με το πρώτο bit σε 0 και, συνεπώς, διαιρείται με το 2, αλλά μπορούμε επίσης να ελέγχει αν ένας αριθμός διαιρείται με το 4, 8, 16, 32, 64, κτλ ... χρησιμοποιώντας τα κατάλληλα έντυπα:

Actionscript:
  1. ! ( a & 3 ) ) { if (! (α & 3)) (
  2. / / Διαιρετού από 4 (μάσκα = 3 = 00000011) από τις 4 είναι 00000100)
  3. )

Αν τα δύο τελευταία bits είναι το μηδέν ο αριθμός διαιρείται με το 4! Αν τα 3 τελευταία bits (μάσκα 00000111) είναι στο μηδέν, ο αριθμός διαιρείται με 8! Και ούτω καθεξής :)

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

Actionscript:
  1. rowIndex % 2 == 0 ) { εάν (rowIndex% 2 == 0) (
  2. rowColor = 0xFFFFFF?
  3. { Else ()
  4. rowColor = 0xCCCCCC?
  5. )

Πρώτα απ 'όλα τα παραπάνω κώδικας μπορεί να λυθεί με μία μόνο γραμμή κώδικα:

Actionscript:
  1. == 0 ) ?0xFFFFFF:0xCCCCCC; rowColor = (rowIndex% 2 == 0); 0xFFFFFF: 0xCCCCCC?

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

Actionscript:
  1. fooIndex == false ) ) ?0xFFFFFF:0xCCCCCC; rowColor = (fooIndex = (fooIndex == false)); 0xFFFFFF: 0xCCCCCC?

Πού είναι fooIndex είναι μια τιμή που να precedentemete true ή false ανάλογα με τον τρόπο που η αρχική μας χρώμα φόντου. Η προσέγγιση αυτή είναι πιο λεπτό και λιγότερο άμεσα, με την πρώτη ματιά, αλλά πιο γρήγορα γιατί εκτελεί λογικές πράξεις του αλήθεια / ψευδής. Αν fooIndex είναι αλήθεια, όταν εκτελούνται Παιδείας (fooIndex = (fooIndex == false) ) την προϋπόθεση (fooIndex == false) είναι εσφαλμένη και, κατά συνέπεια, fooIndex έχει οριστεί από την αλήθεια για την ψευδή. Η δεύτερη φορά, όμως, η κατάσταση (fooIndex == false) είναι αλήθεια, τότε fooIndex που να είναι αλήθεια από ψευδείς! Και ούτω καθεξής ...

Επαναλήψεις: να παρακολουθήσουν τη συμπεριφορά

Η αριθμητική πεπερασμένων, που αποτελεί τη βάση της λειτουργίας της ενότητα, που αναφέρεται συχνά ως η αριθμητική του ρολογιού. Ένα κλασικό ρολόι χέρια να έχουμε μια κλήση διαιρείται σε 12 ώρες (12 ημέρες 12 πιο νύχτα!), Αρκεί να αναφέρει κάθε μία από 24 ώρες την ημέρα. Εάν κατά τις 08:00 το πρωί σας ρωτήσω τι ώρα θα σας παρακολουθούν τις 18 ώρες, η απάντησή σας θα είναι 8 +18 = 26! Αλλά η 02:00 το βράδυ! Ίσως ακούσια και χωρίς να γνωρίζει ότι θα εκτελεί εργασίες conitnuamente μορφή κάθε φορά που έχουμε να κάνουμε με το χρονοδιάγραμμα.

Στην Ιταλία θα χρησιμοποιούνται για το σύστημα για 24 ώρες (ή μεικτή). Όταν δείχνουν 16:00 σημαίνει ότι ο χρόνος από ό, τι σε άλλες χώρες ενδείκνυται ως 04:00 μ.μ.. Ποιος χρησιμοποιεί το postfix π.μ. / μ.μ. να γίνει διάκριση μεταξύ των ωρών diune από τη νύχτα, τις περισσότερες φορές εκτελεί τη λειτουργία της ενότητας, στην περίπτωση αυτή μορφή 12! Εμείς οι Ιταλοί, και άλλοι, ωστόσο, να χρησιμοποιηθούν για τη θεραπεία του σε 24 ώρες, εκτελούν συναλλαγές με το Έντυπο 24!

Πού είναι οι 11 το πρωί (11:00 για όλους) και σκέφτονται "μεταξύ 5 ώρες", οι Ιταλοί απαντήσουν 5 11 = 16 (τέσσερις το απόγευμα), ένας αλλοδαπός μπορεί, επίσης, ανταποκριθεί 5 pm 11 = 4. Από το 5 + 11 nell'aritmetica κλασικό, προφανώς είναι 16, όπως έκανε και ο άγνωστος να απαντήσει 4 μ.μ.; Πρέπει απλώς να τρέχει το έντυπο σχετικά με τα αποτελέσματα 12: 5 + 11 = 16 mod 12 = 4. Δεν χρειάζεται να πάρεις κομπιουτεράκι για την επαλήθευση της ακρίβειας της δήλωσης, αλλά θα κάνουμε μια μικρή 'όλα? Εμφανίζεται ένα τεταρτημόριο του un'orologio και ψυχικά χέρια τοποθετείται στις 11, στη συνέχεια, προσθέστε την - πάντοτε οπτικά - 5 ώρες και, όπως δια μαγείας θα πράγματι στις 4! Για το λόγο αυτό, καλούνται οι τέσσερις το απόγευμα 16 :)

Στην Ιταλία, όμως, χρησιμοποιούμε ένα έντυπο 24, στην πραγματικότητα: 11 +5 = 16 mod 24 = 16. Όταν 23:00 μ.μ., 5 ώρες μετά τη 28:00 δεν θα είναι, γιατί 28 μορφή 12 = 4! 122514884225 μορφή 24 = 17! Αυτό που συμβαίνει είναι ότι ο αριθμός των Έντυπο 24 αποτέλεσμα ποτέ να μην υπερβαίνει 24. Αλλά το πιο ενδιαφέρον είναι ότι οι αριθμοί επαναλαμβάνονται επ 'αόριστον:

ΚΩΔΙΚΟΣ:
  1. = 1 1% 24 = 1
  2. = 2 2% 24 = 2
  3. = 3 3% 24 = 3
  4. ...
  5. = 22 22% 24 = 22
  6. = 23 23% 24 = 23
  7. = 0 24% 24 = 0
  8. = 1 25% 24 = 1
  9. = 2 26% 24 = 2
  10. = 3 27% 24 = 3
  11. ...
  12. = 0 48% 24 = 0
  13. = 1 49% 24 = 1
  14. = 2 50% 24 = 2
  15. = 3 51% 24 = 3
  16. ...

Αυτή είναι μια επανάληψη άνεση αφοπλισμό. Φανταστείτε, για παράδειγμα, θα πρέπει να έχει ένα αντικείμενο, ένα movieclip, παρόμοια με μια σκακιέρα, σε τέσσερις κίονες. Θα δημιουργηθεί ένα movieclip quandrato, 55x55 pixels και την ομάδα του ιδιότητες esportiamolo ως Simbolo Οι παρακάτω κώδικα θα πρέπει movieclip μας σε τέσσερις κίονες και πηγαίνετε "κεφάλι", χάρη στην μορφή:

Actionscript:
  1. = 4 ; var col: Αριθμός = 4?
  2. var i= 0 ; i < 12 ; i++ ) { για (var i = 0? i <12? i + +) (
  3. Simbolo ( ) ; var s: Sprite = νέο σύμβολο ()?
  4. ; addChild (s)?
  5. i % col ) * 60 ; s. x = (i% col) * 60?
  6. . floor ( i/col ) * 60 ; y = s. Math. πάτωμα (i / col) * 60?
  7. )

Όπως μπορείτε να δείτε τον κωδικό, η μεταβλητή i κύκλου for μεγαλώνει επ 'αόριστον. Αλλά η συντονισμένη x movieclip μας ποτέ να μην υπερβαίνει ένα συγκεκριμένο ποσό, και αυτό επαναλαμβάνεται επ 'αόριστον! Ακολουθεί ένα παράδειγμα:

Φόρτωση Flash Player ...

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

Σχετικές Post

Αφήστε ένα σχόλιο

TAG XHTML επιτρέπεται: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Χρησιμοποίησε <pre> να επισυνάψουν κωδικός