C18 Zahl überprüfen

Gast
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
>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
>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 schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.