Die Rechenoperation Modul

Samstag, 31. Mai 2008

Die "Form" ist eine mathematische Operation auf praktisch allen Programmiersprachen (Ich habe das erste Mal mit Basic auf dem Commodore 64) . Mai erscheinen als einfache Bedienerführung, wie im Fall von ActionScript oder Javascript verwenden, die sowohl den Charakter "Prozent" (a% b), oder als eine Methode oder Bildung. Entwickler können in verschiedenen Kontexten offensichtlich. Gskinner sprach nützlich kurzem zeigt einige Klassiker, aber interessante Beispiele.

Stark vereinfacht ist, gibt die Modulo zweier Zahlen den Rest ihrer Division. Für Vollständigkeit, sagen wir, dass die Transaktion Modul ein sehr breites Thema, das ich behandelt in der RSA-Verschlüsselung ist! Dieses Mal jedoch nicht von Codes oder Chiffren zu sprechen, aber nützlich und viel einfacher.

Teilbar durch ... Alternative

Der erste Gebrauch, können wir die Transaktion Moduls ist es, festzustellen, ob eine Zahl durch eine Zahl b teilbar ist! Wenn risultatto eines% b (% Ich werde hier die Bezeichnung für den Betrieb des Moduls angeben) Null ist, ist ein Vielfaches von b. Ich erinnere mich, als ich mit einem Problem, wie ich wußte nicht, die Transaktion Modul zu tun. Commodore 64 Ich musste wissen, ob eine Zahl durch 2 teilbar ist. Zu der Zeit habe ich diese Syntax (Ich fand den Code ORIGINAL - Jahr 1983):

CODE:
  1. 10 INPUT A
  2. : IF B = INT ( B ) THEN PRINT "OK IL NUMERO " A " E' PARI" :GOTO 10 12 B = A / 2: IF B = INT (B) THEN PRINT "DIE ZAHL OK" A "UND" EQUAL ": GOTO 10
  3. A " E' DISPARI" :GOTO 10 14 PRINT "DIE ZAHL" A "und" Odd ": GOTO 10

Basic auf dem Commodore 64, jedoch nicht über die Transaktion Form - zumindest, dass ich mich erinnere!

Im Grunde, was ich tat genau das von Natur aus die Operation der Form macht: Stellen Sie sicher, dass die Division durch 2 hat keine Ruhe, in diesem Fall zu überprüfen, dass das Ergebnis nicht enthalten einen Dezimalpunkt IF B = INT(B) Wenn der Vorgang der Teilung ist gleich zu ihrer vollen, dann ist die Anzahl gleich!

Wenn auf a Wert, den wir unserer eigenen Kontrolle haben, können das gleiche Ergebnis durch gelöst werden:

ActionScript
  1. a % 2 ) == 0 ) { if ((a% 2) == 0) (
  2. / / Equal
  3. )

Oder, für die 3, nach:

ActionScript
  1. a % 3 ) == 0 ) { if ((in% 3) == 0) (
  2. / / Durch 3 teilbar
  3. )

Die kleine Anmerkung: Dank an die Strecke, wenn Sie mit den Potenzen von 2 tun, ist ein schneller Weg, um zu überprüfen annche, ob eine Zahl gerade oder ungerade ist. In binärer Schreibweise, in der Tat, die geraden Zahlen haben alle das erste Bit auf Null! So, mit den logischen Operatoren, Sie wissen, ob eine Zahl ungerade ist oder auch nur "Evangelischen" das erste Bit:

ActionScript
  1. ! ( a & 1 ) ) { if ((v & 1)) (
  2. / / Equal
  3. )

In der Versammlung, zum Beispiel, das ist unser tägliches Brot! Es ist noch schneller und einfacher (die Motorola 68020, hatte zum Beispiel eine Anweisung BTST dass "geprüft" nur ein einziges Bit ;) ). Logische Operationen (AND, OR, NOT, XOR, etc ...), die in der Tat sind, schneller zu sein bei laufendem und damit die "Time Machine"! (a & 1) führt die logische Operation der UND bekannt & - Multiplikation bitweise) unter unseren Wert a und 1 (Maske genannt). Wenn a = 7 (00000111), zum Beispiel:

CODE:
  1. 00000111 UND
  2. 00000001 =
  3. 00000001; ungerade

Wenn a = 8:

CODE:
  1. 00001000 UND
  2. 00000001 =
  3. 00000000; gleich

Wir können nicht nur überprüfen, die geraden Zahlen, dh das erste Bit auf 0, und somit durch 2 teilbar, kann aber auch auftreten, wenn eine Zahl durch 4 teilbar, 8, 16, 32, 64, etc. ... mithilfe der entsprechenden Formulare:

ActionScript
  1. ! ( a & 3 ) ) { if ((a & 3)) (
  2. / / Durch 4 teilbar ist (= 3 mask = 00000011) seit dem 4. ist 00000100)
  3. )

Wenn die letzten zwei Bits die Zahl Null sind durch 4 teilbar ist! Wenn die letzten 3 Bit (Maske 00000111) auf Null sind die Zahl ist durch 8 teilbar sein! Und so :)

Gskinner zeigt die Verwendung des Moduls im Falle der Erzeugung von alternativen Werte. Klassisches Beispiel ist der Hintergrund einer Liste von Elementen: ein Weiß und Grau. Gskinner ändern schlägt vor:

ActionScript
  1. rowIndex % 2 == 0 ) { if (rowIndex% 2 == 0) (
  2. rowColor = 0xFFFFFF;
  3. { ) Else (
  4. rowColor = 0xCCCCCC;
  5. )

Zunächst einmal den obigen Code kann mit einer einzigen Zeile Code gelöst werden:

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

Außerdem in diesem besonderen Fall möchte ich vermeiden Leistung tatsächlich ein "Heavy"-Operation-Modul. Diese besondere Situation ist oft in-Schleife beschäftigt, und damit wäre "rechts" nicht Taktzyklen Maschine Abfälle. In diesen Fällen Ich mag den Reiniger (und logische)-Lösung:

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

Wo fooIndex ist, einen Wert festzulegen, precedentemete true oder false je nachdem, wie wir unsere ursprünglich gesetzten Hintergrundfarbe. Dieser Ansatz ist subtiler und weniger unmittelbar auf den ersten, aber schneller, weil es logischer Operationen von true / false durchführt. Wenn fooIndex gilt, wenn die Anweisung ausgeführt wird (fooIndex = (fooIndex == false) ) der Bedingung (fooIndex == false) falsch ist und daher fooIndex ist von true auf false gesetzt. Das zweite Mal jedoch ist die Bedingung (fooIndex == false) wird es wahr, und dann fooIndex von false auf true! Und so weiter ...

Hausaufgaben: Das Verhalten zu beobachten

Über Arithmetik, dass die Funktionen der Form zugrunde liegt, wird oft als Clock-Arithmetik bezeichnet. Eine Uhr klassische Uhr hat ein Zifferblatt in 12 Stunden (12 Tage plus 12 unterteilt Nacht!), Ausreichend, um eine der alle 24 Stunden am Tag geben. Um 08:00 Uhr Wenn Sie, wann Sie Ihre Uhr wird der Gäste zwischen 18 Stunden, Ihre Antwort wäre, 8 +18 = 26 fragen Sie uns! Aber das 02:00 in der Nacht! Vielleicht unbeabsichtigt und ohne es zu wissen, führen wir Operationen conitnuamente Form, wenn wir mit dem Zeitplan.

In Italien sind wir, um das System für 24 Stunden verwendet werden (oder gemischt). Wenn wir bis 16:00 Uhr wollen quell'orario als in anderen Ländern Punkt ist ab 04:00 Uhr pm angegeben. Who is using postfix am / pm Stunden Diuna von denen in der Nacht zu unterscheiden, läuft öfter die Transaktion Modul, in diesem Fall Form 12! Wir Italiener und andere, jedoch wird daran gewöhnt, die 24 Stunden halten, führen wir Maßnahmen mit Formblatt 24!

Wann sind die 11 (11.00 Uhr für alle) und denke an "zwischen 5 Stunden", die Italiener reagieren 5 11 = 16 (vier Uhr nachmittags), kann ein Ausländer reagieren auch 5 11 = 4 Uhr. Seit 5 + 11, klassische Arithmetik, ist natürlich 16, ebenso wie der Fremde bis 4 Uhr, Begegnung? Starten Sie einfach das Modul 12 über das Ergebnis: 5 + 11 = 16 mod 12 = 4. Es ist nicht notwendig, dass Sie einen Taschenrechner, um die Genauigkeit der Berechnung zu überprüfen, aber diese Schritte sind ein bisschen "alle; un'orologio angezeigt ein Gesicht der geistigen Haltung und die Hände auf der 11, dann fügen Sie - immer optisch - 5 Stunden und, wie von Zauberhand Sie tatsächlich über 4! Deshalb ist vier Uhr nachmittags genannt werden 16 :)

In Italien dagegen, verwenden wir ein Formblatt 24, in der Tat: 11 +5 = 16 mod 24 = 16. Wenn ich bis 23:00 Uhr, nach 5 Stunden wird nicht der 28:00, weil 28 modulo 12 = 4! 122514884225 Form 24 = 17! Was passiert, ist, dass die Zahl der das Ergebnis modulo 24 nie mehr als 24. Aber das Interessante ist, dass die Zahlen auf unbestimmte Zeit wiederholt werden:

CODE:
  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. ...

Diese Wiederholung ist ein Trost zu entwaffnen. Stellen Sie sich vor, zum Beispiel, dass sie ein Objekt, ein MovieClip, wie ein Schachbrett, in vier Spalten. Erstellen Sie eine MovieClip quandrato, 55x55 Pixel und Panel esportiamolo Eigenschaft mit dem Namen Simbolo Der folgende Code wird unsere MovieClip auf vier Säulen haben, und wird "wrap" durch den Betrieb des Moduls:

ActionScript
  1. Number = 4 ; var col: Number = 4;
  2. var i= 0 ; i < 12 ; i ++ ) { for (var i = 0; i <12; i + +) (
  3. Sprite = new Simbolo ( ) ; var s: Sprite = new Symbol ();
  4. s ) ; addChild (s);
  5. = ( i % col ) * 60 ; s. x = (i% col) * 60;
  6. = Math . floor ( i / col ) * 60 ; s. y = Math. floor (i / col) * 60;
  7. )

Wie in den Code die Variable i des Zyklus for immer auf unbestimmte Zeit. Aber das Koordinatensystem x unserer MovieClip nie einen bestimmten Wert überschreitet, und wiederholt auf unbestimmte Zeit! Hier ist ein konkretes Beispiel:

Loading Flash Player ...

Mit den beiden Reglern können Sie die Anzahl der Spalten variieren (Modul) und die Gesamtzahl der Elemente, mit dem Algorithmus von Überholen.

Verwandte Post

War dieser Artikel hilfreich?: Per nientePocoAbbastanzaMoltoMoltissimo
Loading ... Loading ...

Ein Kommentar zu "Die arithmetische Operation Modul

  1. getAvatar 1,0

Leave a comment

TAG XHTML Berechtigungen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> INSERTION CODE:
 <pre></pre>         // blocco generico [code][/code]       // blocco generico [as][/as]           // Actionscript [css][/css]         // CSS Style Sheet [html][/html]       // HTML [js][/js]           // Javascript [objc][/objc]       // Objective-C [php][/php]         // PHP [sql][/sql]         // SQL