Gast
#1422595
Hi Ich möchte eine Zahl prüfen, ob sie gerade ist. Was genau macht folgende Funktion: if (zahl % 2 == 0);
|
Anzeige
|
C18 Zahl überprüfen
Gast
#1422595
Hi Ich möchte eine Zahl prüfen, ob sie gerade ist. Was genau macht folgende Funktion: if (zahl % 2 == 0); Nichts dank dem Strichpunkt hinter dem if, ein wenig Rechenzeit verschwenden. Bei richtiger Anwendung: %2 => modulo 2 -> den Rest einer Division durch 2 zurückgeben Ist der 0 -> gerade Ist der 1 -> ungerade
Gast
#1422618
Rambo schrieb: > Hi > > Ich möchte eine Zahl prüfen, ob sie gerade ist. Was genau macht folgende > Funktion: > > if (zahl % 2 == 0); wenn die zahl mod 2 = 0 ist, ist sie gerade. Das ist einer der Fälle, wo die höhere Programmiersprache extrem uneffektiv ist. Eine Zahl ist gerade, wenn das kleinste Bit = 0 ist, das lässt sich mit Assembler mit einem einzigen Befehl prüfen und in einem Maschinentakt statt einer kompletten Division. Gruss Reinhard
Gast
#1422652
>Das ist einer der Fälle, wo die höhere Programmiersprache extrem >uneffektiv ist. Eine Zahl ist gerade, wenn das kleinste Bit = 0 ist, das >lässt sich mit Assembler mit einem einzigen Befehl prüfen und in einem >Maschinentakt statt einer kompletten Division. Das liegt eher am Programmierer als an der Sprache. if((zahl & 1) == 0){}
Gast
#1422654
Noe, höchstens an den Compiler-Flags. das % 2erPotenzKonstante wird als & umgesetzt
Gast
#1422657
>das % 2erPotenzKonstante wird als & umgesetzt
Das habe ich beim C18 schon anders gesehen ;)
Er tut es nähmlich nicht. Zumindest die
Version die ich mal benutzt habe.
Reinhard Kern schrieb: > Das ist einer der Fälle, wo die höhere Programmiersprache extrem > uneffektiv ist. Eine Zahl ist gerade, wenn das kleinste Bit = 0 ist Sehr schlechtes Beispiel für den Unterschied, denn mit Hochsprache hat das überhaupt nichts zu tun. Das lässt sich in Hochsprache genauso realisieren und man kann das auch in Assembler per Division abwickeln. Ausserdem ist es seit jeher Aufgabe eines Compilers, solche Trivialitäten aufeinander abzubilden. Wenn ein heutiger Compiler es in diesem Fall nicht schafft, dann ist das dem Compiler anzulasten, nicht der Sprache. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|