Best practise: isOdd oder isEven in Actionscript 3.0

20 Mai

von am 20.Mai 2009, in der Kategorie Scripting

Ich habe neulich in Actionscript 3.0 eine Funktion gesucht, mit der ich ganz simpel herausfinde ob eine Zahl gerade oder ungerade ist. In den meisten Programmiersprachen gibt es die Funktionen isEven und isOdd ja. Actionscript nicht.

Ich bin dann aber schlussendlich doch noch fündig geworden. Die eine Methode ist, mit einem Modulo den Rest der Teilung durch 2 zu ermitteln: (num % 2) == 1 -> odd
Das ganze Funktioniert einfach dadurch, dass der Modolo-Term den Rest der Gleichung ausgibt. bei x % 2 kommt also entweder der Rest 1 (bei ungeraden Zahlen) oder der Rest 0 (bei geraden Zahlen) heraus.

23 % 2 = 1 (23/2 = 11 Rest 1)
2050 % 2 = 0 (2050 / 2 = 1025 Rest 0)
… usw

Eine aber eine i.d.R. doppelt so schnelle Methode hingegen ist wenn man bitweise operiert:

“& 1″ ist hierbei ein BITWISE AND. Das Heißt die eingehende zahl wird bitweise mit (binär)…01 verglichen. Kommt hierbei der Wert 1 (binär …01) raus, so hat die input-zahl an letzter Stelle eine 1 und ist somit ungerade.

Ähnliche Artikel:

: trackback it! (copy link target...)
add to del.icio.us   Add to Blinkslist   add to furl   Digg it     Stumble It!     add to simpy   seed the vine       TailRank   post to facebook

Über Manuel Graf

Manuel Graf ist Mediengestalter für Digital- und Printmedien bei iBusiness.de. Er arbeitet seit 6 Jahren mit Photoshop, HTML und CSS und hat sich seit 2 Jahren Kentnisse in Sprachen wie Javascript, Actionscript 3.0, BOIL, PHP, Ruby oder Python angeeignet.

Kommentare

5 Comments for this entry

  • loopmode

    Nice! :-)
    Auch wenn ich das grad gar nicht brauche (Hatte beim Warten auf unseren server mal nach “Actionscript 3 best of” gegoogelt) :D

  • Manuel Graf

    Danke -g-.
    Aber sag mal, wie langweilig war dir, dass du bis zur Seite 10 auf google kommst? Weil dort steht dieser Artikel, wenn man nach “Actionscript 3 best of” sucht. ;)

  • alekz

    Scherz beiseite Nr. 2:

    “return (num & 1) == 1″

    muss es dann wohl heißen !? :)

  • Frank

    (1) Müßte es nicht – z. B. –

    function isOdd(num):Boolean {
    return (num & 1) == 1
    }

    lauten?

    Vgl. alekz Kommentar.

    Kann man den Programmtext in diesem Forum noch ändern?

    Grüße Frank

    (2) Übrigens ist mir die — grins — -Funktion ebenfalls sympathisch.

    Grüße Frank

  • Manuel Graf

    Ups. Natürlich, ihr habt recht. Es muss heissen “(num & 1) ==1″ Ich bedanke mich für eure Aufmerksamkeit. Mir ist das nicht aufgefallen. Tja man sollte sienen code halt lieber einmal durchlesen, bevor man ihn veröffentlicht, neech?

    Habe es edtiert, müsste jetzt stimmen.

    Danke nochmal an alekz und Frank!

Leave a Reply